1

假设我有以下 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 查询给出的不同字符串的数量(在我的示例中,我特别想查看当前有多少人注册了事件)?

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

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

4

1 回答 1

1

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

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

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

例如

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

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

于 2016-02-13T00:21:12.487 回答