【发布时间】:2011-09-27 07:39:02
【问题描述】:
我正在尝试将光标应用于我的应用程序,但是文档对我来说不够清晰。 谷歌对光标的描述 http://code.google.com/appengine/docs/python/datastore/queries.html#Query_Cursors
光标的位置定义为最后一个返回结果之后的结果列表中的位置。光标不是列表中的相对位置(它不是偏移量);它是开始索引扫描以获取结果时数据存储可以跳转到的标记。如果查询的结果在使用游标之间发生变化,则查询只会注意到游标之后结果中发生的变化。如果查询的游标位置之前出现了新的结果,则在获取游标之后的结果时不会返回该结果。同样,如果实体不再是查询的结果,而是出现在光标之前,则出现在光标之后的结果不会改变。如果最后返回的结果从结果集中移除,游标仍然知道如何定位下一个结果。
在我的理解中,查询结果看起来总是会以默认顺序返回(例如 __ key __)。然后,使用指定游标,它将添加一个过滤器以过滤掉该游标之前的所有结果。正如谷歌过去提到的那样。这是真的吗?
使用 __ 键 __ 和非唯一属性进行分页 http://code.google.com/appengine/articles/paging.html
另一个问题,光标可以与迭代或任务一起使用吗? 由于某些原因,此功能将无法正常工作。 通常在迭代过程中可能会产生“query not found”。
这是我的例子:
people = Person.all().filter("age > ", 30)
if cursor:
people.with_cursor(cursor)
try:
for person in people: # query not found
cursor = people.cursor()
except DeadlineExceededError:
taskqueue.add(url="/people", params= {"cursor", cursor})
【问题讨论】:
标签: python google-app-engine gql