8

I have this structure:

class User(DeclarativeBase):
   ...
   teamMemberships = orm.relationship("TeamXREF",backref="user",lazy = "dynamic")


class TeamXREF(DeclarativeBase):
   ...


class Team(DeclarativeBase):
   ...
   name=db.Column(String)
   teamMembers = orm.relationship("TeamXREF",backref="team",lazy = "dynamic")

However, I can't manage to write in 1 query (I always end up with loops and multiple queries) that eager loads all these info at once:

  • user.teamMemberships
  • user.teamMemberships.team
  • user.teamMemberships.team.teamMembers
  • user.teamMemberships.team.teamMembers.user
ptou
  • 323
  • 4
  • 12

1 Answers1

7

You might try just explicitly loading the items in the query rather than hard coding it into your relationships. Something like this:

from sqlalchemy.orm import joinedload
Session.query(User).options(joinedload('teamMemberships').joinedload('team').joinedload('teamMembers').joinedload('user'))

http://docs.sqlalchemy.org/en/improve_toc/orm/loading_relationships.html#loading-along-paths

benvc
  • 14,448
  • 4
  • 33
  • 54
Ian Wilson
  • 6,223
  • 1
  • 16
  • 24