对查询字段求和

时间:2013-01-16 03:53:29

标签: sqlalchemy func

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

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的{​​{1}}(从页面借用)进行过滤。我不知道在my_query v.s.之上再次进行过滤是否真的更有效率。在qry上使用for循环。

2 个答案:

答案 0 :(得分:9)

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

sum = my_query.with_entities(func.sum(Item.counter)).scalar()

答案 1 :(得分:-1)

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

from sqlalchemy import func
my_query = session.query(func.sum(Item.counter)).filter(somefilter)