如何汇总来自 Google Datastore 查询结果的属性列表?

Posted

技术标签:

【中文标题】如何汇总来自 Google Datastore 查询结果的属性列表?【英文标题】:How do I sum a list of attributes from a Google Datastore query result? 【发布时间】:2022-01-22 07:25:35 【问题描述】:

寻找一种使用 ndb 查询对属性列表求和的有效方法。目前我只是获取结果并在它们上运行一个 for 循环。

class Player(ndb.Model):
    score = ndb.IntegerProperty()

score_of_group = 0
all_players = Player.query().filter("various filters").fetch()
for player in all_players:
    score_of_group += player.score

【问题讨论】:

【参考方案1】:

如果这是您拥有的模型(单个模型)并且您的“各种过滤器”只是过滤该单个模型的不同方式,我不相信您可以直接在查询中求和。

对于 Python 代码本身,您可以使用内置的 sum 函数,因此您的代码可能类似于

    all_players = Player.query().filter("various filters").fetch()
    score_of_group = sum([x.score for x in all_players])

如果您碰巧有至少 2 个模型,并且您正在根据另一个模型中的值从另一个模型中获取记录(例如,您有一个人员列表,并且您需要从另一个表中检索他们的所有比赛/得分),那么您应该查看@ndb.tasklet 以加快数据检索/使其更高效,但您仍然需要自己总结

【讨论】:

我就是这么想的。这种迭代和求和是不可避免的。再次感谢。

以上是关于如何汇总来自 Google Datastore 查询结果的属性列表?的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Datastore Emulator 如何验证我们的 datastore-index.xml?

如何在 Google App Engine 的 Datastore 模型中获取行数?

Google Cloud DataStore 说明

Google Datastore 插入/更新查询中如何使用长 ID?

如何在 Google Cloud Datastore 上更新交易中的帐户余额

使用 gcloud 连接到 Google Datastore