首页 > 解决方案 > Flask-SQLAlchemy:未定义名称“func”

问题描述

我正在使用 flask-sqlalchemy 从 db 中查询聚合值。

这是我的课:

class SblClientPosition(db.Model):
    record_date = db.Column(db.String(8), primary_key=True, index=True)
    client_id   = db.Column(db.String(10), primary_key=True, index=True)
    stock_code  = db.Column(db.String(8), primary_key=True, index=True)
    t1_qty      = db.Column(db.Integer, default=0)
    t2_qty      = db.Column(db.Integer, default=0)

我想在 SQL 中查询的是:

select stock_code, sum(t1_qty) as 't1_total', sum(t2_qty) as 't2_total' 
from SblClientPosition
where record_date = '20211031'
group by stock_code

这是我的查询:

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

这是我得到的错误:

Traceback (most recent call last):
  File "C:\Python3\Lib\site-packages\flask\app.py", line 2091, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Python3\Lib\site-packages\flask\app.py", line 2076, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Python3\Lib\site-packages\flask\app.py", line 2073, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Python3\Lib\site-packages\flask\app.py", line 1518, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Python3\Lib\site-packages\flask\app.py", line 1516, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Python3\Lib\site-packages\flask\app.py", line 1502, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "C:\Users\Administrator\Desktop\sbl_distributer\sbl_distributer_main.py", line 134
    pool = SblClientPosition.query(SblClientPosition.stock_code, func.sum(SblClientPosition.t1_qty).lable('t1_total'), func.sum(SblClientPosition.t2_qty).lable('t2_total')).filter_by(record_date='20211031').group_by(SblClientPosition.stock_code).all()
NameError: name 'func' is not defined

所以我希望知道哪里错了?

标签: pythonsqlalchemyflask-sqlalchemy

解决方案


看起来您需要从 SQLAlchemy 导入 func:

from sqlalchemy import func

推荐阅读