Google应用引擎如何从数据存储中计算SUM?

时间:2010-04-21 20:35:06

标签: python google-app-engine gql

我想知道,如何从数据存储区(python)获得评级实体的总和?

我应该:

ratingsum = 0
for rating in ratings:
    ratingsum + rating

print ratingsum

2 个答案:

答案 0 :(得分:12)

是的,这就是它。检索您想要求和的所有实体,并在您的应用中对它们求和。 GQL中没有SUM

如果您要完成的是找到实体的平均评分,那么有更好的方法。

class RateableThing(db.Model):
    num_ratings = db.IntegerProperty()
    avg_rating = db.FloatProperty()

查找事物的平均评分是一个简单的查找,添加新评级只是:

thing.avg_ratings = ((thing.avg_ratings * thing.num_ratings) + new_rating) / thing.num_ratings + 1
thing.num_ratings += 1
thing.put()

App Engine数据存储的主流习惯是尽可能多地写入,尽可能少地读取,因为读取会更频繁地发生。

答案 1 :(得分:0)

我无法回答您的问题的Google App Engine部分,但您的代码(如果您将+更改为+=)相当于:

ratingsum = sum(ratings)

我很确定你可以在包含类似数字的对象的任何序列或可迭代对象上使用sum()