假设我有以下 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/