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

Counting the number of distinct strings given by a GQL Query in Python

假设我有以下 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(),但这当然 returns 列表中的字符串总数,而不管每个字符串的唯一性。

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

你不能 - 至少不能直接。 (顺便说一下,您没有 GQL 数据库)。

如果你有少量的项目,然后将它们取入内存,并使用集合操作产生唯一集合,然后计数

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

例如

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

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