Par exemple (eagerload/joinedload faire la même chose):SQLAlchemy charge seule collection, non backref quand eagerloading
session = Session()
parents = session.query(Parent).options(joinedload(Parent.children)).all()
session.close()
print parents[0].children # This works
print parents[0].children[0].parent # This gives a lazy loading error
Ajout de la boucle suivante avant de fermer les travaux de la session (et ne touche pas le DB):
for p in parents:
for c in p.children:
c.parent
Ce qui est assez bête. Existe-t-il un moyen de modifier la requête d'origine afin qu'elle charge les deux côtés de la relation sans ajouter plus de jointures dans le SQL de sortie?
mise à jour Dans le cas où c'est pertinent; voici le mappage
class Parent(Entity):
__tablename__ = "parent"
id = Column(Integer, primary_key=True)
children = relation("Child", backref="parent")
class Child(Entity):
__tablename__ = "child"
id = Column(Integer, primary_key=True)
parentId = Column(Integer, ForeignKey("parent.id"), index=True)