【发布时间】:2011-05-02 09:27:36
【问题描述】:
class Entry(Base):
amount = db.IntegerProperty()
entries = Entry.gql("WHERE amount > 0")
有没有办法用索引作为数组引用条目结果,例如
my_entry = entries[4]
【问题讨论】:
标签: python google-app-engine gql
class Entry(Base):
amount = db.IntegerProperty()
entries = Entry.gql("WHERE amount > 0")
有没有办法用索引作为数组引用条目结果,例如
my_entry = entries[4]
【问题讨论】:
标签: python google-app-engine gql
entries = [x for x in Entry.gql("WHERE amount > 0")]
此答案与先前答案的区别在于它在数据存储区而不是在处理程序中进行过滤,并且不需要您猜测将返回的最大实体数。
【讨论】:
list(Entry.gql("WHERE amount > 0"))。
.fetch(n) 效率低,其中 n 是您想要的最大结果数。
您可以在Query 实例上使用fetch() 方法:
class Entry(Base):
amount = db.IntegerProperty()
entries = Entry.gql("WHERE amount > 0").fetch(5)
print entries[4].amount
【讨论】:
你必须做一个 fetch() 。这会给你一个条目列表。在这种情况下, my_entry=entries[4] 会给你第五个对象。你试图做的是操纵 gql 对象。这显然是行不通的。试试这个
class Entry(Base):
amount = db.IntegerProperty()
entries = Entry.gql("WHERE amount > 0").fetch(1000)
print entries[4].amount
【讨论】:
如果要在结果查询中引用特定索引的一个对象,可以使用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.
【讨论】:
entries= [entry for entry from Entry.all() if entry.amount > 0]
print entries[4]
【讨论】: