Google App Engine Как рассчитать сумму от хранилища данных? - PullRequest
6 голосов
/ 22 апреля 2010

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

если я:

ratingsum = 0
for rating in ratings:
    ratingsum + rating

print ratingsum

Ответы [ 2 ]

12 голосов
/ 22 апреля 2010

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

0 голосов
/ 22 апреля 2010

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

ratingsum = sum(ratings)

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

...