Sqlalchemy запрашивает объект из одной БД и фиксирует его в другой БД (со связью) - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть локальная база данных и удаленная база данных, а также объект, имеющий несколько вложенных отношений. Обе БД имеют одинаковую схему.

Я хотел бы запросить локальную базу данных для объекта и передать объект (со всеми его связями) в удаленную базу данных.

Я попробовал следующее:

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 рекурсивно и объектно.

Есть идеи, как мне этого добиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...