0

就在最近嘗試類似的AppEngine上交互式控制檯以下:如何在where子句中指定大於<something>的ID?

from google.appengine.ext import db 
from django.utils import simplejson 

class TestDb(db.Model): 
    author = db.StringProperty() 

def add(name): 
    t = TestDb() 
    t.author = name 
    t.put() 
#added some names... 
lst = db.GqlQuery("Select * from TestDb") 

print [(x.key().id(), x.author) for x in lst] 

我知道事實,ID是不連續的,但我相信它會爲了那個充斥着每一個新的紀錄被提升

現在我希望把其SQL看起來像一個條件:

SELECT * FROM TestDb WHERE ID > 2 

這是可能通過GqlQuery()

+0

您是否試過這樣做?測試這個應該沒有問題。 – pydsigner

+0

列表結束爲空 – deostroll

+0

當您運行您發佈的代碼時,您獲得了什麼? – pydsigner

回答

2

自動分配的ID不能保證是順序的,所以如果你想依靠訂購實體,你應該自己分配ID(我不推薦),或者按另一個屬性排序(可能是創建時間戳? )

這樣說,你可以使用特殊的__key__屬性進行ID篩選。見Key Filters

+0

你可以在where子句中寫下這個...嗎? – deostroll

+0

是的,我認爲是這樣的:https://developers.google.com/appengine/docs/python/datastore/gqlreference –

+0

該ID不必是連續的,但是我「放」的最後一個記錄的值是否大於它的值倒數第二個記錄條目中的對應值...? – deostroll