Механизм приложения Google, Как считать СУММУ от datestore?

Я задаюсь вопросом, как я могу получить СУММУ объекта оценки, который я получаю от хранилища данных (Python)?

если я:

ratingsum = 0
for rating in ratings:
    ratingsum + rating

print ratingsum

?

6
задан David Underhill 21 April 2010 в 22:51
поделиться

2 ответа

Ага, это все. Получите все сущности, которые вы хотите суммировать, и просуммируйте их в своем приложении. В 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 - выполнять как можно больше работы над записью и как можно меньше - над читайте, так как чтения будут происходить гораздо чаще.

12
ответ дан 9 December 2019 в 20:41
поделиться

Я не могу ответить на часть вашего вопроса о Google App Engine, но ваш код (если вы измените + на + = ) эквивалентно:

ratingsum = sum(ratings)

Я почти уверен, что вы можете использовать sum () для любой последовательности или итерации, содержащей числовые объекты.

0
ответ дан 9 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: