使用谷歌应用引擎的分页
我有几个关于如何在 GAE 中实现分页的问题。测试代码:
for i in range(0, 6):
MyClass(myProperty=unicode(i)).put()
q = MyClass.all()
cursor = None
print
haveMore = True
batchSize = 2
i = 1
while haveMore:
print 'Batch', i
i = i + 1
result_set = q.with_cursor(start_cursor=cursor).fetch(batchSize)
for obj in result_set:
print obj.myProperty
cursor = q.cursor()
print cursor
haveMore = True if len(result_set) == batchSize else False
输出:
Batch 1
0
1
E9oBTgoMdGVzdGJlZC10ZXN0GgdNeUNsYXNzIUNVUlNPUiFqHWoMdGVzdGJlZC10ZXN0cg0LEgdNeUNsYXNzGAIMggENCxIHTXlDbGFzcxgCDOABABQ=
Batch 2
2
3
E9oBTgoMdGVzdGJlZC10ZXN0GgdNeUNsYXNzIUNVUlNPUiFqHWoMdGVzdGJlZC10ZXN0cg0LEgdNeUNsYXNzGAQMggENCxIHTXlDbGFzcxgEDOABABQ=
Batch 3
4
5
E9oBTgoMdGVzdGJlZC10ZXN0GgdNeUNsYXNzIUNVUlNPUiFqHWoMdGVzdGJlZC10ZXN0cg0LEgdNeUNsYXNzGAYMggENCxIHTXlDbGFzcxgGDOABABQ=
Batch 4
问题:
- 首先,使用相同的游标在 for 循环的不同迭代中,结果集是如何推进的?
- 如何解决边界情况?这个 for 循环应该在 3 次迭代后结束。第 4 次批次是空的。
- 如何在 GAE 中反向分页(也就是说,怎么回到前一页而不是下一页)?