首页 > 解决方案 > 如何在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 ,如果可能的话,我希望避免这样做。

非常感谢您提前。

标签: pythonsqlalchemyflask-sqlalchemy

解决方案


由于 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


推荐阅读