Sqlalchemy 对查询中的字段求和

Sqlalchemy 对查询中的字段求和,sqlalchemy,func,Sqlalchemy,Func,这应该是一个提问前的问题,我搜索了一下,但我找不到任何答案。对不起,如果是重复的。我有一个疑问,比如: my_query=session.query(Item).filter(somefilter) 现在,Item有一列,比如说counter,我想找到my\u query这一列的总和。 我可以这样做: sum=0 for row in query: sum+=row.counter 但我不认为这是一种有效的方法,特别是在大型数据库中。我知道这是可能的:,但这需要在qry(从页面借用)

这应该是一个提问前的问题,我搜索了一下,但我找不到任何答案。对不起,如果是重复的。我有一个疑问,比如:

my_query=session.query(Item).filter(somefilter)
现在,Item有一列,比如说
counter
,我想找到
my\u query
这一列的总和。 我可以这样做:

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

但我不认为这是一种有效的方法,特别是在大型数据库中。我知道这是可能的:,但这需要在
qry
(从页面借用)上进行过滤,我已经给出了过滤版本
my_query
。我不知道在
qry
v.s.上使用
my_query
上的for循环再次进行过滤是否真的更有效

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

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

我也有同样的问题。我在irc.freenode.org#sqlalchemy上问,Inklespen指给我看


嗨,Ketouem,我认为在这种情况下,您应该在查询的顶部进行筛选,而我要求的是对已经存在的查询进行求和。。。
sum = my_query.with_entities(func.sum(Item.counter)).scalar()