python - 如何在flask-sqlalchemy的一行中同时包含SELECT语句中的SUM、COUNT
问题描述
我对编程世界很陌生。最近,我一直在尝试将python 3.6中的sqlite代码重写为flask-sqlalchemy,我想知道如何在一条语句中重写flask-sqlalchemy中的以下代码并将选定的值传递给一个变量,就像在代码中:
rows = db.execute("SELECT SUM(student_total) AS stdtotal, SUM(payment_total) AS paytotal, COUNT(identifier) AS clstotal FROM classes WHERE admin_id = :admID", admID=session["user_id"])
我读过这个:http ://wiki.workassis.com/sum-avg-count-max-group_by-distinct-sqlalchemy/ 但我需要从 sqlalchemy 导入 func ,如果可能的话,我希望避免这样做。
非常感谢您提前。
解决方案
由于 Ilja Everilä 的评论和一些进一步的阅读,我已经解决了它。我尝试使用 func 库并且它有效。我想我不可能避免使用 func。对于以后可能遇到和我一样问题的flask-sqlalchemy新用户,我把自己想出的解决方法写出来:
注意:此解决方案需要从sqlalchemy.sql导入标签
rows = 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,返回值是一个字典,但对于 flask-sqlalchemy,返回值是一个对象。(见http://docs.sqlalchemy.org/en/latest/orm/query.html)
推荐阅读
- node.js - error while installing "npm install -g ionic cordova"
- vb.net - Fetching machine details remotely from large group of computers
- java - Smali - how to to edit the url on click in this code
- node.js - NCD -nodejs certified developer
- vba - 从一个工作表复制到另一个工作表而不使用 vba 打开 excel
- java - 从包含 System.out.print 的方法中仅检索返回值
- python - 如何使用大型数据集并行化 python 循环
- scala - 加载日志记录时出错,LOC 标头无效
- javascript - 单击同级组件中的按钮时,如何暂停/恢复计时器?
- spring - Spring security:自定义身份验证提供程序不起作用