SQLAlchemy使用自动加载创建表时出现循环依赖项错误

SQLAlchemy使用自动加载创建表时出现循环依赖项错误,sqlalchemy,Sqlalchemy,我正在尝试使用找到的脚本 我正在连接到MS SQL数据库,并试图将其复制到MySQL数据库中。当脚本到达这一行时: table.metadata.create_all(dengine) 我得到的错误是: sqlalchemy.exc.CircularDependencyError 我重新搜索了这个错误,发现它发生在创建表时使用autoload=True时。不过,这个解决方案对我没有帮助。解决方法是在定义外键时不使用autoload=True并使用use\u alter=True标志,但我不是手

我正在尝试使用找到的脚本

我正在连接到MS SQL数据库,并试图将其复制到MySQL数据库中。当脚本到达这一行时:

table.metadata.create_all(dengine)
我得到的错误是:

sqlalchemy.exc.CircularDependencyError

我重新搜索了这个错误,发现它发生在创建表时使用
autoload=True
时。不过,这个解决方案对我没有帮助。解决方法是在定义外键时不使用
autoload=True
并使用
use\u alter=True
标志,但我不是手动定义表,因此无法设置该标志


任何关于如何纠正这个问题的帮助,或者关于如何更好地完成我正在尝试做的事情的帮助,都将不胜感激。谢谢。

您可以遍历所有约束并对其设置“使用更改”:

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)
        )