Google App Engine 1.3.5で導入されたQueryのEnd Cursorsを使ってみる。
QueryのEnd Cursorsを使うと、カーソルの終了地点を指定することが出来る。
使用するモデル
from google.appengine.ext import db
class Person(db.Model):
...
Personクラスには、positionの順に登録されている。
> q = Person.all().order('position')
> for p in q.fetch(5): print p.full_name
>
氏名0
氏名1
氏名2
氏名3
氏名4
6件目を示すカーソル。
> q.fetch(5)
> cursor1 = q.cursor()
11件目を示すカーソル。
> q.fetch(10)
> cursor2 = q.cursor()
16件目を示すカーソル。
> q.fetch(15)
> cursor3 = q.cursor()
6件目から10件目までを取得する。
> r = Person.all().order('position')
> r.with_cursor(cursor1, cursor2)
> for p in r.fetch(100): print p.full_name
氏名5
氏名6
氏名7
氏名8
氏名9
6件目から15件目までを取得する。
> r.with_cursor(cursor1, cursor3)
> for p in r.fetch(100): print p.full_name
氏名5
(省略)
氏名14
Google App Engineのドキュメントには、End Cursorsの記述はまだないみたい。
Cursorsについては英語ドキュメントの「Query Cursors」を参照。