App引擎查询使用索引引用检索数据

时间:2011-05-02 09:27:37

标签: python google-app-engine gql


class Entry(Base):
    amount = db.IntegerProperty()


entries = Entry.gql("WHERE amount > 0")

有没有办法用索引作为数组来引用条目结果,例如

my_entry = entries[4]

5 个答案:

答案 0 :(得分:3)

entries = [x for x in Entry.gql("WHERE amount > 0")]

此答案和之前答案之间的区别在于它在数据存储区而不是在处理程序中进行过滤,并且不要求您猜测将返回的实体的最大数量。

答案 1 :(得分:2)

您可以在Query实例上使用fetch()方法:

class Entry(Base):
    amount = db.IntegerProperty()


entries = Entry.gql("WHERE amount > 0").fetch(5)

print entries[4].amount

答案 2 :(得分:1)

你必须做一个fetch()。这将为您提供一个条目列表。在那种情况下,my_entry = entries [4]将为您提供第五个对象。你要做的是操纵gql对象。这显然是行不通的。试试这个

class Entry(Base):
    amount = db.IntegerProperty()


entries = Entry.gql("WHERE amount > 0").fetch(1000)

print entries[4].amount

答案 3 :(得分:1)

如果要在结果查询中引用特定索引的一个对象,可以使用fetch db.Query方法和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.

答案 4 :(得分:-1)

entries= [entry for entry from Entry.all() if entry.amount > 0]
print entries[4]