从数据存储中获取Entity.key.IN([keys ...])中的实体

时间:2015-05-30 00:54:32

标签: database google-app-engine google-cloud-datastore app-engine-ndb

我正在尝试获取一长串实体,而这些实体都是指一些不同的相关实体。它在评论中得到了解释,但基本上很多“项目”都提到了一些“公司”。我不想对key(IE unique_key)中的每个key.get()进行多次查询,因此我认为以下内容可行,但它会返回一个空列表。祈祷告诉我,我做错了什么?或者有更好的方法来实现引用一些项目的许多项目的这种关系,同时最小化对db的调用(我是AppEngine数据存储区的新手)。

注意,这是在Python中,使用app引擎提供的ndb库。

# "items" is a list of entities that have a property "parenty_company"
# parent_company is a string of the Company key
# I get a unique list of all Key strings and convert them to Keys
# I then query for where the Company Key is in my unique list

unique_keys = list(set([ndb.Key(Company, prop.parent_company) for prop in items]))
companies = Company.query(Company.key.IN(unique_keys)).fetch()

1 个答案:

答案 0 :(得分:1)

你绝对应该使用ndb.get_multi(unique_keys)。它将在一个批处理中异步获取所有密钥。