0

私はGoogle App Engineをndbバックエンドで使用しています。私は単一の値を取得したいと思います。例:ndbエンティティからndbエンティティからプロジェクタ全体を取得します。金額のプロパティを合計したいgae ndbクエリから単一の値を取得する方法は?

私が今使っていることのようにクエリ結果のリスト内包されています

query = ndb.gql("select amount from Transactions").fetch() 
result = sum([x.amount for x in query]) 

はNDBクエリは金額のみのリストを返すので、私は直接クエリ結果を合計することができ作るためにどのような方法があります以下のような:事前

+0

それは私より – Greg

+0

ていなくても簡単な方法が可能ではないでしょうか? 私は、何百ものエンティティがあれば何をするのですか? –

+0

上記のコードの 'query'は、実際にはクエリオブジェクトではなくエンティティのリストです。したがって、上記の結果を減らすことができます: 'result = reduce(lambda x、y:x + y、map(lambda x:x.amount、Transactions.query()。fetch( projection = [Transactions.amount、]))))しかし、以下の例よりも読みにくいです。 –

答えて

1

query = ndb.gql("select amount from Transactions").fetch() 
result = sum(query) 

おかげフェッチ投影からの値のリストを取得する直接的な方法はありません(私はあなたがDjangoのORM TransactiのNDBアナログを探していると仮定ons.query()すべての()の値())以下のように、あなたが行う場合があります。。

result = sum([x.amount for x in Transactions.query().fetch(
    projection=[Transactions.amount,])]) 

https://cloud.google.com/appengine/docs/python/ndb/projectionqueries

関連する問題