SQLite supporta una "cache condivisa" per :memory:
database quando vengono aperti con uno speciale URI (secondo sqlite.org):SQLAlchemy e SQLite cache condivisa
[T] egli stesso in-memory database può essere aperto da due o più connessioni al database come segue:
rc = sqlite3_open("file::memory:?cache=shared",&db);
posso approfittare di questo in Python 3.4 utilizzando la URI parameter per sqlite3.connect()
:
sqlite3.connect('file::memory:?cache=shared', uri=True)
Tuttavia, non riesco a ottenere la stessa cosa lavorare per SQLAlchemy:
engine = sqlalchemy.create_engine('sqlite:///:memory:?cache=shared')
engine.connect()
...
TypeError: 'cache' is an invalid keyword argument for this function
C'è qualche modo per arrivare SQLAlchemy a fare uso della cache condivisa?
Edit:
su Python 3.4, posso utilizzare l'argomento creator
-create_engine
per risolvere il problema, ma il problema rimane su altre versioni di Python:
creator = lambda: sqlite3.connect('file::memory:?cache=shared', uri=True)
engine = sqlalchemy.create_engine('sqlite://', creator=creator)
engine.connect()
Non penso che si possa fare questo senza il backporting del nuovo modulo sqlite3 e funzionalità alle versioni precedenti. – codeape