Новая версия SQLite имеет возможность принудительно вводить ограничения внешнего ключа, но для обратной совместимости вам необходимо включить ее для каждого подключения к базе данных отдельно!
sqlite> PRAGMA foreign_keys = ON;
Я использую SQLAlchemy - как я могу убедиться, что это всегда включается? Я пробовал это:
engine = sqlalchemy.create_engine('sqlite:///:memory:', echo=True)
engine.execute('pragma foreign_keys=on')
... но он не работает!... Что мне не хватает?
EDIT: Я думаю, что моя реальная проблема в том, что у меня установлена более одной версии SQLite, а Python не использует последнюю версию!
>>> import sqlite3
>>> print sqlite3.sqlite_version
3.3.4
Но я только что загрузил 3.6.23 и поместил exe в свой каталог проектов! Как я могу выяснить, какой из них использовать .exe и изменить его?