gpt4 book ai didi

python - 方便地迭代数据存储实体

转载 作者:行者123 更新时间:2023-11-30 23:45:57 24 4
gpt4 key购买 nike

请教我如何正确地做到这一点,因为我觉得我目前的方式很冗长。

我知道迭代 App Engine 中的所有实体并不完全是它的设计用途,但有时我想收集有关我的实体的统计数据,例如有多少用户是女性。实际上,标准可能更复杂,但无论如何都需要检查每个实体。

这是一些关于我如何迭代实体的伪代码:

def handle_count_female_users(cursor = None, counter = 0):
q = User.all()
if cursor:
q.with_cursor(cursor)
MAX_FETCH = 100
users = q.fetch(MAX_FETCH)

count_of_female_users = len(filter(lambda user:user.gender == 'female', users))
total_count = counter + count_of_female_users

if len(users) == MAX_FETCH:
Task(
url = "/count_female_users",
params = {
'counter' : str(total_count),
'cursor' : q.cursor()
}
).add()
else:
# Now finally have the result
logging.info("We have %s female users in total." % total_count)

我有自动映射 GET/foo 的路由代码以由handle_foo 处理,我发现这很方便。正如你所看到的,即使如此,我还是有很多支持循环的东西,几乎与我真正想要完成的任务无关。

我真正想做的是:

tally_entities(
entity_class = User,
filter_criteria = lambda user:user.gender == 'female',
result = lambda count:logging.info("We have %s female users in total" % count)
)

有什么想法可以接近这个理想吗?或者有更好的方法吗?

最佳答案

听起来是一个很好的 MapReduce 用例: http://code.google.com/p/appengine-mapreduce/wiki/GettingStartedInPython

关于python - 方便地迭代数据存储实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9313392/

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