我正在尝试使用找到的here脚本。
我正在连接到MS SQL数据库并尝试将其复制到MySQL数据库中。当脚本到达这一行时:
table.metadata.create_all(dengine)
我收到错误:
sqlalchemy.exc.CircularDependencyError
我重新搜索了此错误,发现在创建表时使用autoload=True
时会出现此问题。解决方案虽然没有帮助我。对此的解决方案是不使用autoload=True
并在定义外键时使用use_alter=True
标志,但我没有手动定义表,因此我无法设置该标志。
如何纠正这个问题或者更好地完成我想要做的事情的任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
您可以遍历所有约束并在其上设置use_alter:
from sqlalchemy.schema import ForeignKeyConstraint
for table in metadata.tables.values():
for constraint in table.constraints:
if isinstance(constraint, ForeignKeyConstraint):
constraint.use_alter = True
或类似地,迭代它们并将它们指定为AddConstraint
操作,绑定到整个元数据创建后:
from sqlalchemy import event
from sqlalchemy.schema import AddConstraint
for table in metadata.tables.values():
for constraint in table.constraints:
event.listen(
metadata,
"after_create",
AddConstraint(constraint)
)