【发布时间】:2022-01-20 07:37:15
【问题描述】:
我正在尝试使用 SQLAlchemy 复制数据库。第一次尝试是:
from from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import sessionmaker
from urls import engine_urls
engine1 = create_engine(engine_urls[0])
engine2 = create_engine(engine_urls[1])
metadata = MetaData()
metadata.reflect(engine1)
tables = metadata.tables
metadata.create_all(engine2)
Session1 = sessionmaker(bind=engine1)
from sqlalchemy import insert
with Session1.begin() as session:
for key in tables:
table_object = tables[key]
for row in session.query(table_object):
s = insert(table_object).\
values(**dict(zip(row.keys(), row)))
engine2.execute(s)
但是这段代码不起作用,因为插入的顺序是任意的,这违反了 FK 约束。例如,在父母之前插入一个孩子会导致这种违规行为。我怎样才能完成这项任务?框架中是否有一部分可以轻松做到这一点?没找到。
【问题讨论】:
标签: python sqlalchemy