python - SQL炼金术 : eager loading relationships of relationships of relationship

标签 python sqlalchemy eager-loading

我有这样的结构:

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

最佳答案

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

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

关于python - SQL炼金术 : eager loading relationships of relationships of relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30004293/

相关文章:

python - Pylons 1.0 和 SQLAlchemy 0.6 - 如何建模?

php - Laravel 急切加载 phpunit 测试

ruby-on-rails - 如何摆脱归因于 rails 关联的 n+1 查询?

f# - 懒惰..但在 F# 中急切的数据加载器

python - 任何人都有一个使用 lxml.html 中的 element.sourceline 方法的示例

python - sqlalchemy 插入数据不起作用

python - 使用 url_for 函数为 Flask 测试客户端生成 URL

sql-server - 用于 MS SQL 的 pandas to_sql

python - celery worker sleep 无法正常工作

java - 您如何处理数据处理的时区?