gpt4 book ai didi

python - sqlalchemy 和 SQLite 共享缓存

转载 作者:IT老高 更新时间:2023-10-28 21:14:10 27 4
gpt4 key购买 nike

当使用特殊 URI(根据 sqlite.org)打开 :memory: 数据库时,SQLite 支持“共享缓存”:

[T]he same in-memory database can be opened by two or more database connections as follows:

rc = sqlite3_open("file::memory:?cache=shared",&db);

我可以在 Python 3.4 中通过使用 URI parameter 来利用这一点对于 sqlite3.connect():

sqlite3.connect('file::memory:?cache=shared', uri=True)

但是,我似乎无法为 SQLAlchemy 获得同样的效果:

engine = sqlalchemy.create_engine('sqlite:///:memory:?cache=shared')
engine.connect()
...
TypeError: 'cache' is an invalid keyword argument for this function

有没有办法让 SQLAlchemy 使用共享缓存?

编辑:
在 Python 3.4 上,我可以使用 create_enginecreator 参数来解决问题,但问题仍然存在于其他 Python 版本:

creator = lambda: sqlite3.connect('file::memory:?cache=shared', uri=True)
engine = sqlalchemy.create_engine('sqlite://', creator=creator)
engine.connect()

最佳答案

您应该避免在较旧的 Python 版本上传递 uri=True,问题将得到解决:

import sqlite3
import sys

import sqlalchemy


DB_URI = 'file::memory:?cache=shared'
PY2 = sys.version_info.major == 2
if PY2:
params = {}
else:
params = {'uri': True}

creator = lambda: sqlite3.connect(DB_URI, **params)

engine = sqlalchemy.create_engine('sqlite:///:memory:', creator=creator)
engine.connect()

关于python - sqlalchemy 和 SQLite 共享缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910829/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com