如何在sqlalchemy迁移脚本或sqlite的配置文件中打开'PRAGMA foreign_keys = ON'?

use*_*336 2 sqlite sqlalchemy alembic

在合适的sqlite版本中,我们可以通过'PRAGMA foreign_keys = ON'强制执行外键约束.但是,每次进行连接时,用户都无法登录数据库.所以我想知道如何让它在sqlalchemy/alembic的迁移脚本中运行?非常感谢!

van*_*van 6

请参阅SA SQLite文档中的外键支持:

import sqlite3

from sqlalchemy.engine import Engine
from sqlalchemy import event

@event.listens_for(Engine, "connect")
def set_sqlite_pragma(dbapi_connection, connection_record):
    if type(dbapi_connection) is sqlite3.Connection:  # play well with other DB backends
       cursor = dbapi_connection.cursor()
       cursor.execute("PRAGMA foreign_keys=ON")
       cursor.close()
Run Code Online (Sandbox Code Playgroud)