疑問に思っていますが、データストア(Python)から取得した評価エンティティのSUMを取得するにはどうすればよいですか?
するべきか:
ratingsum = 0
for rating in ratings:
ratingsum + rating
print ratingsum
?
疑問に思っていますが、データストア(Python)から取得した評価エンティティのSUMを取得するにはどうすればよいですか?
するべきか:
ratingsum = 0
for rating in ratings:
ratingsum + rating
print ratingsum
?
うん、それはほとんどそれです。合計するすべてのエンティティを取得し、アプリで合計します。SUM
GQLにはありません。
達成しようとしているのがエンティティの平均評価を見つけることである場合は、より良い方法があります。
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データストアの一般的なイディオムは、読み取りがはるかに頻繁に行われるため、書き込みでは可能な限り多くの作業を行い、読み取りでは可能な限り少ない作業を行うことです。
質問のGoogleAppEngineの部分に答えることはできませんが、コード(に変更した場合+
)+=
は次のようになります。
ratingsum = sum(ratings)
sum()
数字のようなオブジェクトを含む任意のシーケンスまたは反復可能オブジェクトで使用できると確信しています。