5

这应该是一个问过的问题,我搜索过,但我找不到任何答案。对不起,如果它是重复的。我有一个查询可以说:

my_query=session.query(Item).filter(somefilter)

现在,Item 有一列,可以说counter,我想找到这一列的总和my_query。我可以这样做:

sum=0
for row in query:
    sum+=row.counter

但我不认为这是在大型数据库中专门执行此操作的有效方法。我知道这是可能的:sqlalchemy simple example of `sum`, `average`, `min`, `max`,但这需要过滤qry(从页面借用),我已经给出了过滤版本my_queryqry我不知道在 on 上再次进行过滤是否真的更有效my_query

4

2 回答 2

13

我有同样的问题。我在 irc.freenode.org#sqlalchemy 上询问,inklesspen 将我指向Query#with_entities()

sum = my_query.with_entities(func.sum(Item.counter)).scalar()
于 2014-07-09T23:02:34.177 回答
-1

sqlalchemy.func 中有一大堆 SQL“组”函数:

from sqlalchemy import func
my_query = session.query(func.sum(Item.counter)).filter(somefilter)
于 2013-01-16T16:30:49.260 回答