使用谷歌应用引擎的分页

4 投票
1 回答
648 浏览
提问于 2025-04-16 18:06

我有几个关于如何在 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

问题:

  1. 首先,使用相同的游标在 for 循环的不同迭代中,结果集是如何推进的?
  2. 如何解决边界情况?这个 for 循环应该在 3 次迭代后结束。第 4 次批次是空的。
  3. 如何在 GAE 中反向分页(也就是说,怎么回到前一页而不是下一页)?

1 个回答

撰写回答