我有一个本地数据库和一个远程数据库,以及一个具有多个嵌套关系的对象。 两个数据库具有完全相同的架构。
我想查询本地数据库中的对象,并将对象(及其所有关系)提交到远程数据库。
我尝试了以下操作:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
local_engine = create_engine(LOCAL_URI)
dest_engine = create_engine(DEST_URI)
local_session = sessionmaker(bind=local_engine)()
dest_session = sessionmaker(bind=dest_engine)()
my_obj = local_session.query(MyObject).first()
# detach object from local session
local_session.expunge(my_obj)
dest_session.add(my_obj)
dest_session.commit()
这通过了,但是对象未正确提交,尝试再次访问它会导致此错误:
AttributeError: module 'models.engine' has no attribute 'contextual_connect'
我当时想这可能是因为延迟加载,但是我在文档中找不到以任何方式递归eager_load
或joinload
并反对的方法。
有什么想法可以实现这一目标吗?