python - 计算 Python 中 GQL 查询给出的不同字符串的数量

标签 python google-app-engine google-cloud-datastore gql gqlquery

假设我有以下 GQL 数据库,

class Signatories(db.Model):
    name = db.StringProperty()
    event = db.StringProperty()

该数据库保存有关人们已报名参加的事件的信息。假设我在数据库中有以下格式的条目(event_name,event_desc):(Bob,TestEvent),(Bob,TestEvent2),(Fred,TestEvent),(John,TestEvent)。 但这里的困境是,我不能将 Bob 的所有事件聚合到一个实体中,因为我想查询所有注册参加特定事件的人,而且我想添加此类条目,而无需手动更新每次都进入。

如何计算 Python 中 GQL 查询给出的不同字符串的数量(在我的示例中,我专门尝试查看当前有多少人报名参加事件)?

我尝试过使用旧的 mcount = db.GqlQuery("SELECT name FROM Signatories").count(),但是这当然会返回列表中的字符串总数,无论每个字符串的唯一性。

我还尝试过使用 count = len(member),其中 member = db.GqlQuery("SELECT name FROM Signatories"),但不幸的是,这只返回一个错误。

最佳答案

你不能——至少不能直接这样做。 (顺便说一句,您没有 GQL 数据库)。

如果项目数量较少,则将它们提取到内存中,并使用集合操作生成唯一的集合,然后进行计数

如果您有大量实体导致内存过滤和计数出现问题,那么您的策略将是在创建它们时聚合计数,

例如

每次创建以字符串对作为键的事件时,都会创建一个单独的实体。这样,数据存储中就只有一个代表特定对的实体。然后就可以直接计数了。

但是,当您获得大量这些实体时,您将需要开始执行一些额外的工作来对它们进行计数,因为单个 query.count() 将变得过于昂贵。然后,您需要开始考虑使用数据存储的计数策略。

关于python - 计算 Python 中 GQL 查询给出的不同字符串的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374331/

相关文章:

python - 带有 Django 的 Paypal NVP API

node.js - 将 React 应用程序部署到 Google App Engine 时出现 502 服务器错误

google-app-engine - 在本地环境中重定向后,我是否应该期待过时的结果?

java - 什么是 Google App Engine 数据存储区 "parent key"?

java - 实现一对多双向关系 App Engine 时出现 com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException

python - 如何以普通字符显示ip

python - 从 Azure Key Vault 下载 .PEM 格式的公钥

python - 将 pandas 列表列转换为矩阵表示(一次热编码)

java - AppEngine BlobStore 无法上传 blob,因为从 1.5.5 更新到 1.6.1 | getUploads(req) 和 getUploadedBlobs(req) 都失败

python - 如何最小化由 mapreduce 库发起的数据存储写入?