SQLite hỗ trợ một "bộ nhớ cache được chia sẻ" cho :memory:
cơ sở dữ liệu khi chúng được mở ra với một URI đặc biệt (theo sqlite.org):SQLAlchemy và SQLite chia sẻ bộ nhớ cache
[T] ông cùng trong bộ nhớ cơ sở dữ liệu có thể được mở bởi hai hoặc nhiều cơ sở dữ liệu kết nối như sau:
rc = sqlite3_open("file::memory:?cache=shared",&db);
tôi có thể tận dụng điều này bằng Python 3.4 bằng công URI parameter cho sqlite3.connect()
:
sqlite3.connect('file::memory:?cache=shared', uri=True)
Tuy nhiên, tôi dường như không thể có được điều tương tự làm việc cho SQLAlchemy:
engine = sqlalchemy.create_engine('sqlite:///:memory:?cache=shared')
engine.connect()
...
TypeError: 'cache' is an invalid keyword argument for this function
Có một số cách để có được SQLAlchemy tận dụng bộ nhớ cache được chia sẻ?
Sửa:
Mở Python 3.4, tôi có thể sử dụng đối số creator
-create_engine
để giải quyết vấn đề, nhưng vấn đề vẫn còn trên các phiên bản Python khác:
creator = lambda: sqlite3.connect('file::memory:?cache=shared', uri=True)
engine = sqlalchemy.create_engine('sqlite://', creator=creator)
engine.connect()
Tôi không nghĩ rằng bạn có thể làm điều này mà không cần phải chỉnh sửa sqlite3 modul mới e chức năng cho các phiên bản trước đó. – codeape