SqlAlchemy:如何实现 DROP TABLE ... CASCADE?
·
回答问题
我需要删除具有外键约束并需要DROP TABLE ... CASCADE的 PostgreSQL 数据库中的表。
我可以执行原始 SQL:engine.execute("DROP TABLE %s CASCADE;" % table.name)。但是,我想实现这种行为,以便我可以为postgresql方言做table.drop(engine)。
一个人将如何解决这个问题?
Answers
您可以像这样自定义结构的编译:
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语句,同时保持所有其他方言相同。
更多推荐

所有评论(0)