【问题标题】:SQLAlchemy : eager loading relationships of relationships of relationshipSQLAlchemy:关系关系的急切加载关系
【发布时间】:2018-10-10 04:31:47
【问题描述】:

我有这个结构:

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")

但是,我无法编写 1 个查询(我总是以循环和多个查询告终)来一次急切地加载所有这些信息:

  • user.teamMemberships
  • user.teamMemberships.team
  • user.teamMemberships.team.teamMembers
  • user.teamMemberships.team.teamMembers.user

【问题讨论】:

    标签: python sqlalchemy eager-loading


    【解决方案1】:

    您可以尝试仅在查询中显式加载项目,而不是将其硬编码到您的关系中。像这样的:

    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

    【讨论】:

      猜你喜欢
      • 2016-04-25
      • 1970-01-01
      • 2014-02-24
      • 2021-04-28
      • 2014-10-13
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多