SQLAlchemy: обращаться к связанным объектам после закрытия сессии

У меня есть много моделей связанных сами с собой и друг с другом, и эти связи нужно использовать в логике сервера. Код довольно сложный, поэтому нельзя сохранять сессии после выполнения запроса. Вместо этого я пытаюсь пред загрузить все объекты:

def db_get_structure():
    with Session(my_engine) as session:
        deps = {x.id: x for x in session.query(Department).all()}
        ...
        return (deps, ...)

def some_logic(id):
    struct = db_get_structure()
    return some_other_logic(struct.deps[id].owner)

Однако я получаю следующую ошибку несмотря на то, что все объекты уже подгружены:

sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <Department at 0x10476e780> is not bound to a Session; lazy load operation of attribute 'owner' cannot proceed

Возможно ли как-то связать загруженные объекты друг с другом так, чтобы использовать их связи после закрытия сессии?


Ответы (0 шт):