【发布时间】:2025-12-18 05:00:02
【问题描述】:
我正在使用带有 ndb 后端的 Google App Engine,我想从 ndb 实体获取单个值 ex:int,在任何查询之后,我都会得到带有投影的整个实体,在我的情况下,我有一个 Transactions实体,我想对金额属性求和。
我现在使用的是对查询结果的列表理解,例如:
query = ndb.gql("select amount from Transactions").fetch()
result = sum([x.amount for x in query])
有没有办法让ndb查询只返回一个金额列表,所以,我可以直接对查询结果求和:
query = ndb.gql("select amount from Transactions").fetch()
result = sum(query)
提前致谢
【问题讨论】:
-
不可能
-
没有比我更简单的方法吗?我的意思是,如果我有数百个该实体该怎么办??!
-
只是上面代码中的注释
query实际上是实体列表而不是查询对象。因此,您可以将上面的内容减少到result = reduce(lambda x, y: x+y, map(lambda x: x.amount, Transactions.query().fetch( projection=[Transactions.amount,]))),尽管比下面的示例可读性要差得多。 -
这很有帮助,非常感谢。
标签: python google-app-engine google-cloud-datastore app-engine-ndb gql