【发布时间】:2015-03-10 17:47:16
【问题描述】:
当:memory: 数据库使用特殊 URI(根据sqlite.org)打开时,SQLite 支持“共享缓存”:
[T]同一个内存数据库可以被两个或多个数据库打开 连接如下:
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_engine 的 creator 参数来解决问题,但问题仍然存在于其他 Python 版本:
creator = lambda: sqlite3.connect('file::memory:?cache=shared', uri=True)
engine = sqlalchemy.create_engine('sqlite://', creator=creator)
engine.connect()
【问题讨论】:
-
如果不将新的 sqlite3 模块功能反向移植到早期版本,我认为您无法做到这一点。
标签: python sqlite sqlalchemy