在ndb模型中按id过滤
filter by id in ndb model
我正在使用 ndb 模型作为我的数据库。我想做的是根据 ID 列表过滤结果。
我有我的模型:
class Photo(ndb.Model):
userid = ndb.StringProperty()
source = ndb.StringProperty()
handle = ndb.StringProperty()
sourceid =ndb.StringProperty()
所以我正在尝试这样查询:
queryset=Photo.query(Photo.key.id().IN(photoid_list))
我也试过了:
queryset=Photo.query(Photo.id().IN(photoid_list))
其中 photoid_list 是 ID 列表。
帮我解决一下。
文档中有示例:
https://cloud.google.com/appengine/docs/python/ndb/queries#neq_and_in
所以您的查询看起来应该是:
queryset=Photo.query(Photo.id.IN(photoid_list))
我建议您从每个 ID 创建密钥,然后一次获取所有密钥:
photo_keys = [ndb.Key(Photo, id) for id in photoid_list]
photos = ndb.get_multi(photo_keys)
优点是get比查询快。此外,ndb 将按键缓存实体并使后续获取更快。
我正在使用 ndb 模型作为我的数据库。我想做的是根据 ID 列表过滤结果。 我有我的模型:
class Photo(ndb.Model):
userid = ndb.StringProperty()
source = ndb.StringProperty()
handle = ndb.StringProperty()
sourceid =ndb.StringProperty()
所以我正在尝试这样查询:
queryset=Photo.query(Photo.key.id().IN(photoid_list))
我也试过了:
queryset=Photo.query(Photo.id().IN(photoid_list))
其中 photoid_list 是 ID 列表。 帮我解决一下。
文档中有示例:
https://cloud.google.com/appengine/docs/python/ndb/queries#neq_and_in
所以您的查询看起来应该是:
queryset=Photo.query(Photo.id.IN(photoid_list))
我建议您从每个 ID 创建密钥,然后一次获取所有密钥:
photo_keys = [ndb.Key(Photo, id) for id in photoid_list]
photos = ndb.get_multi(photo_keys)
优点是get比查询快。此外,ndb 将按键缓存实体并使后续获取更快。