小编典典

父模型上的SQLAlchemy load_only

sql

当渴望加载子关系时,如何仅加载父模型的几列:

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

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

阅读 182

收藏
2021-05-23

共1个答案

小编典典

错误消息指出您只是选择Book.author,而不是的实例Book。如果chapters返回的只是字符串列表(用于author),该去哪里。

您可以执行以下任一操作:

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

或者

session.query(Book).options(load_only("author"), joinedload("chapters").load_only("title"))
2021-05-23