La nueva versión de SQLite tiene la capacidad de hacer cumplir las restricciones de clave externa, pero en aras de la compatibilidad con versiones anteriores, hay que activarlo para cada conexión de base de datos por separado!Sqlite/SQLAlchemy: ¿cómo hacer cumplir las claves externas?
sqlite> PRAGMA foreign_keys = ON;
Estoy usando SQLAlchemy - ¿cómo puedo asegurarme de que siempre esté activado? Lo que he intentado es la siguiente:
engine = sqlalchemy.create_engine('sqlite:///:memory:', echo=True)
engine.execute('pragma foreign_keys=on')
... pero no funciona ... ¿Qué me falta?
EDIT: Creo que mi problema real es que tengo más de una versión de SQLite instalado, y Python no está utilizando la última uno!
>>> import sqlite3
>>> print sqlite3.sqlite_version
3.3.4
¡Pero acabo de descargar 3.6.23 y puse el exe en el directorio de mi proyecto! ¿Cómo puedo averiguar qué .exe que está usando, y cambiarlo?
¿Usó el PRAGMA de la misma manera que lo he hecho? –
Gracias, lo tengo trabajando también. De hecho, el problema consistía en varias copias de SQLite en mi máquina ... ¡arreglar eso y usar PoolListener han funcionado perfectamente! –
¡Funciona! Pero cómo hacer que funcione con poolevent ... – 42n4