You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLAlchemy中subquery调用后load_only失效,如何仅加载指定列?

解决SQLAlchemy子查询中load_only不生效的问题
  • 问题根源:load_only是ORM实例加载阶段的控制选项,作用是查询结果转化为User对象时只加载指定属性列。但调用subquery()时,SQLAlchemy会生成原生SQL子查询,ORM层面的加载规则不会影响SQL生成逻辑,所以仍会查询全表列。

  • 正确做法:直接在查询中明确指定要包含的列,替代load_only:

    1. 若仅需特定列,直接将列作为query()参数:
      results = session.query(User.name, User.fullname).subquery()
      
    2. 若想基于User实体查询但只取指定列,也可使用with_entities()方法:
      results = session.query(User).with_entities(User.name, User.fullname).subquery()
      

以上两种写法生成的子查询SQL都会仅包含name和fullname两列,不会查询全表列。

内容的提问来源于stack exchange,提问作者kean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:15:51