6

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

我是不是该:

ratingsum = 0
for rating in ratings:
    ratingsum + rating

print ratingsum

?

4

2 回答 2

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 数据存储区的流行习惯是在写入时做尽可能多的工作,在读取时尽可能少做,因为读取会更频繁地发生。

于 2010-04-21T21:02:41.263 回答
0

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

ratingsum = sum(ratings)

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

于 2010-04-21T21:35:46.323 回答