计算 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() 将变得过于昂贵。然后,您需要开始研究使用数据存储的计数策略。
假设我有以下 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() 将变得过于昂贵。然后,您需要开始研究使用数据存储的计数策略。