当前位置: 首页 > 面试题库 >

父模型上的SQLAlchemy load_only

宦博雅
2023-03-14
问题内容

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

如果我仅需要模型的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

问题答案:

错误消息指出您只是选择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"))


 类似资料:
  • 我试图检索一个模型实例及其相关的一个,以便只从两者检索某些字段。这和这两个问题回答了如何为相关模型做到这一点,它对我来说很有效: 但是,如果我也试图限制模型的字段,则根本无法检索数据:

  • 本文向大家介绍自下而上模型与自上而下模型之间的区别,包括了自下而上模型与自上而下模型之间的区别的使用技巧和注意事项,需要的朋友参考一下 自下而上的模型 自下而上模型是一种系统设计方法,其中详细定义了系统的各个部分。一旦设计和开发了这些零件,然后将这些零件或组件链接在一起以准备更大的组件。重复此方法,直到构建完整的系统。自下而上模型的优势在于可以在非常低的级别上进行决策并确定组件的可重用性。 自顶向

  • 我对Django非常熟悉,但最近注意到在_delete=models上存在一个和选项, > 我已搜索了相同的文档,但除了以下内容外,找不到其他内容: Django 2.0 多对一的关系。需要两个位置参数:与模型相关的类和on_delete选项。要创建递归关系(一个与自身具有多对一关系的对象),请使用models.ForeignKey('self',on_delete=models.CASCADE)

  • 问题内容: 我正在创建一个小游戏,您在迷宫中。迷宫是在组织,描述和。就是这样。可以说每个街区都是。现在我的角色是 2m 高,迷宫应该是 4m 高。因此,如果该瓷砖上有墙,我会在彼此之间添加4个块。当然,即使使用,这在米/瓦迷宫中也是巨大的性能影响。因为这是我的第一个3D游戏,所以我想使其保持简单,并且我不想使用高级剔除技术(八叉树或其他:P)。因此,我尝试创建块而不是将其添加到我的世界中。效果不错

  • 我想消除此示例代码中的类型擦除警告: 它编译和工作正常,但有一个警告: 警告:(31,13)类型模式Seq[Int](Seq[Int]的底层)中的非变量类型参数Int未选中,因为它被擦除情况b消除:Seq[Int]= 在这种情况下,你有什么简单的解决方案来避免擦除吗? 到目前为止,我尝试了什么(根据这一点): 但是它不能编译,因为c现在是Any类型。 我相信这个问题有几种解决方法。我会接受最简单的

  • <html>位于网页的顶端 它没有父辈,称之为根节点 1.元素节点(element node)   可以说,整个DOM模型都是由元素节点(element node)组成 比如文本段落元素“<p>”,无序清单的名称“<ul>”,元素节点包含其他元素、 2.文本节点(text node)   例如<h2>中的文本“标题1”,<li>中的文字内容,这些具体文本在DOM称为(text node) 3.属性