sqlalchemy и общий кэш SQLite

SQLite поддерживает «общий кэш» для :memory: баз данных, когда они открываются специальным URI (согласно sqlite.org ):

[T] его же база данных в памяти может быть открыта двумя или несколькими подключениями к базе данных следующим образом:

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

Я могу воспользоваться этим в Python 3.4, используя параметр URI для 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 я могу использовать аргумент creator для create_engine для решения проблемы, но проблема остается в других версиях Python:

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

One Solution collect form web for “sqlalchemy и общий кэш SQLite”

Вам следует избегать передачи uri=True в старых версиях Python, и проблема будет исправлена:

 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 - лучший язык программирования в мире.