Полагаю, вы захотите использовать метод options()
в запросе с eagerload()
или eagerload_all()
.
Вот пример использования из одного из наших приложений, где класс Controlled
имеет отношение, называемое changes
, которое вводит кучу DocumentChange
записей, которые сами имеют отношение dco
, которое приводит к Dco
объект на экземпляр. Это двухуровневая активная нагрузка, поэтому используется eagerload_all()
. Мы используем расширение declarative
(в случае, если это имеет значение), а m.Session является сеансом «scoped» (локальный для потока).
from sqlalchemy.orm import eagerload, eagerload_all
...
controlled_docs = (m.Session.query(m.Controlled)
.options(eagerload_all('changes.dco'))
.order_by('number')
.all())
Если этого недостаточно, возможно, включите фрагмент или текст, показывающий, как соотносятся соответствующие классы ORM, и я мог бы обновить ответ, чтобы показать, как эти опции будут использоваться в вашем случае.