6

疑問に思っていますが、データストア(Python)から取得した評価エンティティのSUMを取得するにはどうすればよいですか?

するべきか:

ratingsum = 0
for rating in ratings:
    ratingsum + rating

print ratingsum

4

2 に答える 2

12

うん、それはほとんどそれです。合計するすべてのエンティティを取得し、アプリで合計します。SUMGQLにはありません。

達成しようとしているのがエンティティの平均評価を見つけることである場合は、より良い方法があります。

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

質問のGoogleAppEngineの部分に答えることはできませんが、コード(に変更した場合++=は次のようになります。

ratingsum = sum(ratings)

sum()数字のようなオブジェクトを含む任意のシーケンスまたは反復可能オブジェクトで使用できると確信しています。

于 2010-04-21T21:35:46.323 に答える