我需要删除具有外键约束的 PostgreSQL 数据库中的表,并且需要 DROP TABLE ... CASCADE
。
我可以执行原始 SQL:engine.execute("DROP TABLE %s CASCADE;"% table.name)
。
但是,我想实现此行为,以便我可以为 postgresql
方言执行 table.drop(engine)
。
如何解决这个问题?
最佳答案
您可以 customize the compilation of constructs像这样:
from sqlalchemy.schema import DropTable
from sqlalchemy.ext.compiler import compiles
@compiles(DropTable, "postgresql")
def _compile_drop_table(element, compiler, **kwargs):
return compiler.visit_drop_table(element) + " CASCADE"
这会将 CASCADE
附加到为 postgresql 方言发出的 DROP TABLE
语句,同时保持所有其他方言相同。
关于python - SqlAlchemy:如何实现 DROP TABLE ... CASCADE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38678336/