SQLAlchemy load_only在父模型上

时间:2016-09-17 23:52:31

标签: python sql orm sqlalchemy

当急切加载子关系时,我怎样才能加载父模型的几列:

如果我只需要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

1 个答案:

答案 0 :(得分:6)

错误消息显示您只选择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"))

test.Location = new Point(0, 800);