如何在flask-sqlalchemy的单行中同时包含SELECT语句中的SUM和COUNT

时间:2018-08-15 18:03:24

标签: python sqlalchemy flask-sqlalchemy

我对编程世界很陌生。最近,我一直在尝试将python 3.6中的 sqlite代码重写为flask-sqlalchemy ,并且我想知道如何在一条语句中将以下代码在flask-sqlalchemy 中重写< / strong>,然后将所选值传递给单个变量,就像代码中一样:

  

rows = db.execute(“ SELECT SUM(student_total)AS stdtotal,   SUM(付款总额)AS付款总数,COUNT(标识符)AS类别来自   在哪里admin_id =:admID“,admID = session [” user_id“])

我已阅读:http://wiki.workassis.com/sum-avg-count-max-group_by-distinct-sqlalchemy/ 但是我需要从sqlalchemy导入func,如果可能,我希望避免这样做。

非常感谢您。

1 个答案:

答案 0 :(得分:0)

由于IljaEverilä的评论和进一步的阅读,我已经解决了它。我尝试使用func库,并且可以正常工作。我想我不可能避免使用func。对于可能与我将来遇到相同问题的新flask-sqlalchemy用户,我将写出我想出的解决方案:

注意:此解决方案需要从 sqlalchemy.sql

导入 标签
  

行= db.session.query(label('stdtotal',db.func.sum(classes.student_total)),label('paytotal',db.func.sum(classes.payment_total)),label(' clstotal',db.func.count(classes.identifier)))。filter_by(admin_id = session [“ user_id”])

**请注意,上述查询的返回值类型与sqlite SELECT语句的返回值类型不同。对于sqlite,rueturn值是一个字典,但是对于flask-sqlalchemy,返回值是一个对象。 (请参见http://docs.sqlalchemy.org/en/latest/orm/query.html