Google App EngineでQuery Cursorsを使ってみる。

Google App EngineでQuery Cursorsを使ってみる。

Google App EngineのQueryクラスのcursor機能を使うと、
前回にfetchで取得したデータの続きを効率よく取得することが出来る。

使用するモデル

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

続きのデータは次回に取得したい。
そこでカーソルを取得する。

> cursor = q.cursor()

memcacheにカーソルを記録しておく。(カーソルは文字列)

> from google.appengine.api import memcache
> memcache.set('person_cursor', cursor)

前回の続きからデータを取得しよう。

> r = Person.all().order('position')

memcacheに記録したカーソルを取り出し、Queryに設定する。

> cursor = memcache.get('person_cursor')
> r.with_cursor(cursor)

そうすると、前回にfetchした続きのデータを取得できる。

> for p in r.fetch(5): print p.full_name
>
氏名5
氏名6
氏名7
氏名8
氏名9

Google App Engineのドキュメントでは、日本語訳にはカーソルについての記述がない。
英語ドキュメントの「Query Cursors」を参照。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください