class Entry(Base):
amount = db.IntegerProperty()
entries = Entry.gql("WHERE amount > 0")
有沒有辦法來指代條目與索引作爲數組導致例如App Engine的查詢檢索的數據與指數參考
my_entry = entries[4]
class Entry(Base):
amount = db.IntegerProperty()
entries = Entry.gql("WHERE amount > 0")
有沒有辦法來指代條目與索引作爲數組導致例如App Engine的查詢檢索的數據與指數參考
my_entry = entries[4]
entries = [x for x in Entry.gql("WHERE amount > 0")]
這和以前的答案之間的區別是,它過濾的數據存儲,而而不是在處理程序中,並且不要求您猜測將返回的實體的最大數量。
你必須做一個取()。這將給你一個條目列表。在這種情況下,my_entry = entries [4]會給你第五個對象。你試圖做的是操縱gql對象。這顯然是行不通的。試試這個
class Entry(Base):
amount = db.IntegerProperty()
entries = Entry.gql("WHERE amount > 0").fetch(1000)
print entries[4].amount
你可以使用fetch()方法上Query
實例:
class Entry(Base):
amount = db.IntegerProperty()
entries = Entry.gql("WHERE amount > 0").fetch(5)
print entries[4].amount
entries= [entry for entry from Entry.all() if entry.amount > 0]
print entries[4]
這將返回數據存儲的所有記錄,將不會縮放。 – 2011-05-02 20:55:40
如果您想引用特定指數的一個對象在結果查詢,您可以使用db.Query
的fetch
法offset
參數:
entry = Entry.gql("WHERE amount > 0").fetch(1, offset=4)[0]
print entry.amount
但是,如果你想指的是多個對象從查詢結果fetch
他們所有和索引作爲正常的Python陣列:
entries = Entry.gql("WHERE amount > 0").fetch(1000)
print entries[4].amount
print entries[5].amount
print entries[7].amount
# etc.
你可以簡單地使用'list(Entry.gql(「WHERE amount> 0」))''。 – systempuntoout 2011-05-02 15:11:43
確實很好。 – 2011-05-02 15:14:20
兩者都不如在查詢中調用'.fetch(n)'效率更高,其中n是您想要的最大結果數。 – 2011-05-02 22:13:28