App Engine, Python: 如何按ID过滤查询?

6 投票
2 回答
4642 浏览
提问于 2025-04-15 19:24

我在尝试从应用引擎的数据存储中获取数据。

通过“标题”(或者其他属性)来过滤查询是可以的:

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字段。

撰写回答