【发布时间】:2009-10-22 13:18:21
【问题描述】:
我有几百个键,都是我预先计算好的同一个模型:
candidate_keys = [db.Key(...), db.Key(...), db.Key(...), ...]
其中一些键是指数据存储区中的实际实体,而有些则不是。我希望确定哪些键确实对应于实体。
不必知道实体中的数据,只要知道它们是否存在即可。
一种解决方案是使用 db.get():
keys_with_entities = set()
for entity in db.get(candidate_keys):
if entity:
keys_with_entities.add(entity.key())
但是,此过程会从商店中获取所有实体数据,这是不必要且成本高昂的。
第二个想法是在key_name 上使用带有IN 过滤器的查询,手动获取30 个块以满足IN 伪过滤器的要求。但是,IN 过滤器不允许仅键查询。
有没有更好的办法?
【问题讨论】:
-
这些是完全任意的键还是有任何其他方法可以将另一个参数关联起来?
-
嗨,让-卢。在我的具体情况下,我所知道的是它们都是同一个模型类的键;然而,一个通用的解决方案也将受到赞赏。如果我可以搜索并避免实际获取实体,我愿意用参数装饰它们。我希望这能回答你的问题。
-
如果尼克的回答让你满意,你可以接受。
-
谢谢,SilentGhost,我知道 :) 哦,你是在谈论我的标签。我是认真的!应该有一个由尼克约翰逊回答的标签!无论如何,我喜欢让问题保持活跃几个小时以鼓励更多参与,然后在它变慢时接受。
标签: python google-app-engine google-cloud-datastore