App Engine, Python: 如何按ID过滤查询?
我在尝试从应用引擎的数据存储中获取数据。
通过“标题”(或者其他属性)来过滤查询是可以的:
obj = db.Query(PageModel).filter('title',title)[0]
但是用ID来做同样的事情却不行:
obj = db.Query(PageModel).filter('ID',page_id)[0]
我觉得在数据存储中,ID和KEY有一些特别的地方,但我找不到如何通过ID来获取数据的方法。
2 个回答
2
你可以通过使用关键字来筛选数据:
from google.appengine.ext.db import Key
key = Key('bgakaWdyc3NlcnIPCxIJRmVlZEVudHJ5GAwM')
# Match many
PageModel.all().filter('__key__ IN ', [key])
# Match one
PageModel.all().filter('__key__ = ', key)
不过,当你只想获取一条记录时,使用 get_by_id(id) 这个方法会更好。
13
试试这个
obj = PageModel.get_by_id(page_id)
。这个假设你正在使用的ID是数据存储键的数字ID(也就是说,它是从像 obj.key().id()
这样的东西中获取的),而不是你在 PageModel
中添加的某个随意的ID字段。