La nuova versione di SQLite ha la capacità di applicare i vincoli di chiave esterna, ma per motivi di compatibilità con le versioni precedenti, è necessario attivarla separatamente per ciascuna connessione di database!Sqlite/SQLAlchemy: come imporre le chiavi esterne?
sqlite> PRAGMA foreign_keys = ON;
Sto usando SQLAlchemy - come posso assicurarmi che questo venga sempre attivato? Quello che ho cercato è questo:
engine = sqlalchemy.create_engine('sqlite:///:memory:', echo=True)
engine.execute('pragma foreign_keys=on')
... ma non funziona ... Che cosa mi manca?
EDIT: Penso che il mio vero problema è che ho più di una versione di SQLite installata, e Python non utilizza la più recente!
>>> import sqlite3
>>> print sqlite3.sqlite_version
3.3.4
Ma ho appena scaricato 3.6.23 e mettere l'exe nella mia directory di progetto! Come posso capire quale .exe sta usando e cambiarlo?
Hai usato il PRAGMA nello stesso modo in cui l'ho fatto? –
Grazie, ho funzionato anche io. In effetti, il problema era costituito da più copie di SQLite sulla mia macchina ... risolvendolo, e l'utilizzo di PoolListener ha funzionato perfettamente! –
Funziona! Ma come farlo funzionare con poolevent ... – 42n4