Родительский экземпляр не привязан к сеансу; Операция отложенной загрузки атрибута "account" не может иногда выполняться - PullRequest
0 голосов
/ 08 мая 2019

SQLAlchemy версия: 1.0.17

например:

class A(Model):
    id = .....
    b = relationship('B')

a = db.session.query(A).options(joinloaded(B)).filter(A.id==1).first()
try:
   function_maybe_raise_exception()
exception:
   do_sth()

if a.b:
    ......

когда я получаю доступ к a.b, возникает исключение Parent instance 'A' is not bound to a Session; lazy load operation of attribute B cannot proceed , иногда , когда function_maybe_raise_exception повышает исключение

Но, очевидно, у меня есть joinloaded атрибут B, хотя объект a находится в состоянии detached, я могу получить доступ к a.b в теории

Справочная информация:

  1. session объект scoped_session()
  2. мое приложение работает в многопоточности
  3. sqlalchemy версия как-то старая
  4. В производственной среде это исключение иногда возникает, когда возникает другое исключение. В моей среде тестирования я не могу воспроизвести эту проблему

Я думаю:

  1. Это ошибка в sqlalchemy? Потому что у меня joinloaded отношение
  2. в многопоточной среде непредсказуемое поведение session 3.объект a был изменён в другом потоке, приводил к этому исключению?

Мой вопрос

это исключение не должно вызываться, потому что у меня есть joinloaded атрибут. Но иногда оно возникает в производстве.

Я что-то не так и что-то упустил?

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