2009-06-09 43 views
0

我想比較在python中過濾gql結果的關鍵,但直接比較或者類型轉換爲int工作。因此,我不得不在下面未註釋的行中提到的解決方法。任何線索。gql不能用於獲取密鑰的參數

row = self.request.get("selectedrow") 
#mydbobject = DbModel.gql("WHERE key=:1", row).fetch(1) 
#mydbobject = DbModel.gql("WHERE key=:1", int(row)).fetch(1)#invalid literal for int() with base 10 
#print mydbobject,row 

que = db.Query(DbModel) 
results = que.fetch(100) 
mydbobject = None 
for item in results: 
if item.key().__str__() in row: 
    mydbobject = item 

EDIT1-多一個嘗試不檢索記錄,關鍵在數據存儲中存在與記錄 mydbobject = DbModel.gql沿( 「WHERE鍵= KEY( '%s' 的)」 %行)。取(1)

回答

1

我是否正確我的假設,你基本上只是想檢索一個特定的關鍵對象?如果是這樣,get and get_by_id methods可能會有所幫助:

mydbobject = DbModel.get_by_id(int(self.request.get("selectedrow"))) 
+0

THX和你的假設是正確的傾倒時,而不是空洞的,而是讓作品 – dhaval 2009-06-10 11:34:37

0

錯誤「無效字面INT()」表明paramater通到int是不是代表一個整數的字符串。嘗試打印「行」的值進行調試,我敢打賭它是一個空字符串。

從鍵中檢索元素的正確方法是使用方法「get」或「get_by_id」。 你的情況:

row = self.request.get("selectedrow") 
mydbobject = DbModel.get(row) 
+0

行包含鍵,THX這麼多 – dhaval 2009-06-10 11:35:17