gpt4 book ai didi

google-app-engine - 在 GQL 中计算结果的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:39 25 4
gpt4 key购买 nike

我认为一种计数方法是这样的:

foo = db.GqlQuery("SELECT * FROM bar WHERE baz = 'baz')
my_count = foo.count()

我不喜欢的是我的计数将被限制为最大 1000,而且我的查询可能会很慢。有人有解决方法吗?我有一个想法,但感觉不干净。要是 GQL 有一个真正的 COUNT 函数就好了……

最佳答案

在使用像 GAE 这样的可扩展数据存储来预先进行计算时,您必须转变思路。在这种情况下,这意味着您需要为每个 baz 保留计数器并在您添加新的 bar 时递增它们,而不是在显示时计数。

class CategoryCounter(db.Model):
category = db.StringProperty()
count = db.IntegerProperty(default=0)

然后在创建 Bar 对象时,增加计数器

def createNewBar(category_name):
bar = Bar(...,baz=category_name)

counter = CategoryCounter.filter('category =',category_name).get()
if not counter:
counter = CategoryCounter(category=category_name)
else:
counter.count += 1
bar.put()
counter.put()

db.run_in_transaction(createNewBar,'asdf')

现在您可以轻松获取任何特定类别的计数

CategoryCounter.filter('category =',category_name).get().count

关于google-app-engine - 在 GQL 中计算结果的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/421751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com