Подтвердить что ты не робот

Родительский экземпляр не связан с сеансом; ленивая загрузка учетной записи атрибута не может продолжаться

При попытке выполнить следующую операцию:

for line in blines:
    line.account = get_customer(line.AccountCode)

Я получаю сообщение об ошибке при попытке присвоить значение line.account:

DetachedInstanceError: Parent instance <SunLedgerA at 0x16eda4d0> is not bound to a       Session; lazy load operation of attribute 'account' cannot proceed

Я что-то делаю неправильно?

4b9b3361

Ответ 1

"отсоединенный" означает, что вы имеете дело с объектом ORM, который не связан с Session. Session является шлюзом для реляционной базы данных, поэтому в любое время, когда вы ссылаетесь на атрибуты на сопоставленном объекте, ORM иногда необходимо вернуться в базу данных, чтобы получить текущее значение этого атрибута. В общем, вы должны работать только с "прикрепленными" объектами - "отключенный" - это временное состояние, используемое для кеширования и для перемещения объектов между сеансами.

См. Quickie Intro to Object States, а затем, вероятно, прочитайте и остальную часть этого документа;).

Ответ 2

У меня была такая же проблема с сельдереем. Добавление lazy='subquery' к отношениям разрешило мою проблему.

Ответ 3

Я столкнулся с этим типом DetachedInstanceError, когда я преждевременно закрываю сеанс запроса (то есть, имея код для работы с объектами модели SQLAlchemy ПОСЛЕ закрытия сессии). Таким образом, чтобы один ключ дважды не закрывал сеанс, пока вам не понадобится взаимодействовать с объектами модели, I.E. некоторые атрибуты модели Lazy Loaded и т.д.