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

时间:2010-02-17 18:00:57

标签: python google-app-engine

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

按'title'(或任何其他属性)过滤查询有效:

obj = db.Query(PageModel).filter('title',title)[0]

但与ID相同 - 不是:

obj = db.Query(PageModel).filter('ID',page_id)[0]

我认为数据存储区中的ID和KEY有一些特殊之处,但我无法找到,如何通过ID实现数据获取。

2 个答案:

答案 0 :(得分:13)

尝试

obj = PageModel.get_by_id(page_id)

代替。这假设您使用的ID是数据存储区键的数字ID(即来自obj.key().id()),而不是您添加到PageModel的任意ID字段。< / p>

答案 1 :(得分: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)方法。