2010-02-17 51 views
6

我嘗試從應用引擎數據存儲中獲取數據。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獲取數據。

+0

需要更多信息。語境?這些屬性是什麼? –

回答

13

嘗試

obj = PageModel.get_by_id(page_id) 

代替。這假定您正在使用的ID是數據存儲區密鑰的數字ID(即,來自obj.key().id()之類的內容),而不是您添加到PageModel的任意ID字段。取一個條目時

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)是優選的:

+0

http://code.google.com/appengine/docs/python/datastore/modelclass.html#Model_get_by_id – Ryan

2

可以通過使用(多個)密鑰過濾數據。