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

Flask-SQLAlchemy调用func做聚合查询报错Name 'func'未定义

错误原因

  • 直接原因:代码中使用的func是SQLAlchemy提供的用于生成SQL聚合、函数调用的专用工具类,你没有在代码中导入该对象,因此运行时无法找到对应的定义,抛出NameError。
  • 额外隐性问题:你的代码还存在两处错误,修复导入问题后依然会运行失败:
    • 将别名方法label错误拼写为lable
    • SblClientPosition.query默认查询全模型字段,不能直接传入自定义查询字段,需要改用db.session.query或者调用with_entities方法指定返回字段

解决方案

  1. 首先在代码开头的导入区域添加func的导入语句:
from sqlalchemy import func
  1. 修正查询代码的拼写和调用逻辑,以下两种写法均可正常运行:

写法1:使用db.session.query

pool = db.session.query(
    SblClientPosition.stock_code,
    func.sum(SblClientPosition.t1_qty).label('t1_total'),
    func.sum(SblClientPosition.t2_qty).label('t2_total')
).filter_by(record_date='20211031').group_by(SblClientPosition.stock_code).all()

写法2:基于模型query调用with_entities

pool = SblClientPosition.query.with_entities(
    SblClientPosition.stock_code,
    func.sum(SblClientPosition.t1_qty).label('t1_total'),
    func.sum(SblClientPosition.t2_qty).label('t2_total')
).filter_by(record_date='20211031').group_by(SblClientPosition.stock_code).all()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:15:05