我假设我想在 Google App Engine 数据存储中检查其存在的 1000 个键名,但不获取实体本身。除了可能的加速之外,原因之一是仅获取密钥是免费的(免费)。
ndb.get_multi()
允许我传入键列表,但它会检索实体。我需要一个函数来做到这一点,但不获取实体,而只是True
或False
基于指定的键是否存在。
我假设我想在 Google App Engine 数据存储中检查其存在的 1000 个键名,但不获取实体本身。除了可能的加速之外,原因之一是仅获取密钥是免费的(免费)。
ndb.get_multi()
允许我传入键列表,但它会检索实体。我需要一个函数来做到这一点,但不获取实体,而只是True
或False
基于指定的键是否存在。
我可能会使用仅键查询...:
q = EntityKind.query(EntityKind.key.IN(wanted_keys))
keys_present = set(q.iter(keys_only=True))
这为您keys_present
提供了一组实际存在于数据存储中wanted_keys
的键。与您想要的从键到布尔的映射不太一样,但是后者可以很容易地构建:
key_there = {k: (k in keys_present) for k in wanted_keys}
...如果您真的想要它(dict
带有bool
值的 a 通常更可能是一个不太实用的 hack set
!-)。