Проблема с SqlAlchemy – «Родительский экземпляр <SomeClass> не привязан к сеансу; ленивая загрузка … "

У меня есть небольшой бережливый сервер на питоне, который я использую, чтобы быстро найти. Сервер запрашивает mysql через SqlAlchemy по первому запросу и перетаскивает все возвращенные объекты в словарь, поэтому при последующих запросах не требуется вызов БД. Я просто получаю объект от dict и затем вызываю некоторые из методов объектов, необходимых для обеспечения правильного ответа.

Первоначально все в порядке. Однако после того, как сервер работает некоторое время, я получаю это исключение при доступе к методам объектов sqlalchemy:

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

Странно, потому что я устанавливаю eagerload('rate') .

Я не могу увидеть шаблон такого поведения, он влияет только на некоторые объекты. Однако, как только он влияет на объект, он будет продолжать делать это при каждом запросе, пока я не перезапущу свой сервер python.

Есть идеи?

One Solution collect form web for “Проблема с SqlAlchemy – «Родительский экземпляр <SomeClass> не привязан к сеансу; ленивая загрузка … "”

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

 if obj not in session: obj = session.query(ObjClass).get(obj.id) 

Правильным решением было бы убедиться, что вы не кэшируете объекты между запросами.

  • флакон admin custom QueryAjaxModelLoader
  • Запись в базу данных MySQL с помощью pandas с использованием SQLAlchemy, to_sql
  • SQLAlchemy: создать запрос на удаление с помощью самообучения в MySQL
  • Это утечка памяти (программа в python с sqlalchemy / sqlite)
  • Флакон один-ко-многим | SQLAlchemy
  • Класс не имеет указанной таблицы или имени табуляции и не наследует от существующего класса с табличным отображением
  • Использование cdecimal в SQLAlchemy
  • sqlalchemy условные множественные фильтры по динамическим ленивым отношениям
  • Python - лучший язык программирования в мире.