我想知道,如何从数据存储区(python)获得评级实体的总和?
我应该:
ratingsum = 0
for rating in ratings:
ratingsum + rating
print ratingsum
答案 0 :(得分:12)
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()
。