Credo si vorrà utilizzare il options()
method on the Query, with eagerload()
or eagerload_all()
.
Ecco un esempio di utilizzo da una delle nostre applicazioni, dove la classe Controlled
ha un rapporto chiamato changes
che porta in un mazzo di DocumentChange
record, che a loro volta hanno una relazione dco
che porta in una Dco
oggetto per istanza. Questo è un carico bisogetico a due livelli, quindi l'uso di eagerload_all()
. Stiamo usando l'estensione declarative
(nel caso sia importante) e m.Session è una sessione "scoped" (thread-local).
from sqlalchemy.orm import eagerload, eagerload_all
...
controlled_docs = (m.Session.query(m.Controlled)
.options(eagerload_all('changes.dco'))
.order_by('number')
.all())
Se questo non è sufficiente, forse, comprendono un frammento o un testo che mostra come le classi ORM rilevanti sono legati e ho potuto aggiornare la risposta a mostrare come le opzioni sarebbero stati utilizzati nel vostro caso.
fonte
2010-03-12 15:22:28