У меня есть локальная база данных и удаленная база данных, а также объект, имеющий несколько вложенных отношений. Обе БД имеют одинаковую схему.
Я хотел бы запросить локальную базу данных для объекта и передать объект (со всеми его связями) в удаленную базу данных.
Я попробовал следующее:
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
рекурсивно и объектно.
Есть идеи, как мне этого добиться?