SQLAlchemy中subquery调用后load_only失效,如何仅加载指定列?
解决SQLAlchemy子查询中load_only不生效的问题
问题根源:
load_only是ORM实例加载阶段的控制选项,作用是查询结果转化为User对象时只加载指定属性列。但调用subquery()时,SQLAlchemy会生成原生SQL子查询,ORM层面的加载规则不会影响SQL生成逻辑,所以仍会查询全表列。正确做法:直接在查询中明确指定要包含的列,替代
load_only:- 若仅需特定列,直接将列作为
query()参数:results = session.query(User.name, User.fullname).subquery() - 若想基于User实体查询但只取指定列,也可使用
with_entities()方法:results = session.query(User).with_entities(User.name, User.fullname).subquery()
- 若仅需特定列,直接将列作为
以上两种写法生成的子查询SQL都会仅包含name和fullname两列,不会查询全表列。
内容的提问来源于stack exchange,提问作者kean
相关产品推荐
相关产品推荐

