【问题标题】:Flask-SQLAlchemy: Name 'func' is not definedFlask-SQLAlchemy:未定义名称“func”
【发布时间】:2021-12-15 13:08:01
【问题描述】:

我正在使用 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

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

【问题讨论】:

  • 正如@dmitrybelyakov 所说,我需要从sqlalchemy 中单独导入func,因为flask_sqlalchemy 没有func。此外,应使用 db.session.query 代替 .query,因为 flask_sqlalchemy 无法识别 func 方法。

标签: python sqlalchemy flask-sqlalchemy


【解决方案1】:

看来您需要从 SQLAlchemy 导入 func:

from sqlalchemy import func

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-27
    • 2017-12-26
    • 2020-12-12
    • 2021-01-18
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多