默认情况下,SQLite不会强制执行ForeignKey约束(请参见http://www.sqlite.org/pragma.html#pragma_foreign_keys)
要启用,请遵循以下文档:http : //docs.sqlalchemy.org/en/latest/dialects/sqlite.html#foreign-
key-
support
这是官方文档的副本粘贴:
当为表发出CREATE语句时,SQLite支持FOREIGN KEY语法,但是默认情况下,这些约束对表的操作没有影响。
SQLite的约束检查具有三个先决条件:
- 至少必须使用SQLite 3.6.19版本
- 必须在未启用SQLITE_OMIT_FOREIGN_KEY或SQLITE_OMIT_TRIGGER符号的情况下编译SQLite库。
PRAGMA foreign_keys =ON使用前必须在所有连接上发出该语句。SQLAlchemy允许通过使用事件为新连接自动发出PRAGMA语句:
from sqlalchemy.engine import Enginefrom sqlalchemy import event@event.listens_for(Engine, "connect")def set_sqlite_pragma(dbapi_connection, connection_record): cursor = dbapi_connection.cursor() cursor.execute("PRAGMA foreign_keys=ON") cursor.close()


