【问题标题】:SQLAlchemy load_only on parent model父模型上的 SQLAlchemy load_only
【发布时间】:2017-01-25 22:35:34
【问题描述】:

eager加载子关系时,如何只加载父模型的几列:

如果我只需要 chapters 模型的 title 列,则此方法有效:

session.query(Book)\
    .options(joinedload('chapters').load_only('title'))

但这会引发错误:

session.query(Book.author)\
    .options(joinedload('chapters').load_only('title'))

查询只有基于表达式的实体 - 找不到名为的属性 '章节'。

换句话说,我想要 ORM 语法中的这个 SQL:

SELECT 
    books.author,
    chapters.title,
FROM 
    books JOIN chapters ON book.id = chapters.book_id

【问题讨论】:

    标签: python sql orm sqlalchemy


    【解决方案1】:

    错误消息显示您只选择了Book.author,而不是Book 的实例。如果chapters 返回的只是一个字符串列表(对于author),那么chapters 会去哪里。

    你可以这样做:

    session.query(Book.author, Chapter.title).select_from(Book).join(Book.chapters)
    

    session.query(Book).options(load_only("author"), joinedload("chapters").load_only("title"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-04
      • 2023-04-05
      • 2015-04-25
      • 2018-04-21
      • 2019-02-19
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多