GAE本地开发服务器已支持游标操作

标签:Google App Engine, Python

刚才在GAE论坛看到Paul Kinlan发帖询问数据库游标操作,他说他在SDK 1.2.6里发现_BaseQuery和Query类都提供了cursor,但没有找到相关文档。
接着Rodrigo Moraes给出了使用的例子,但说只能用于本地开发服务器,GAE上仍不支持。
不过游标已在GAE路线图里提出很久了,用以解决超过1000条记录的查询问题,我想下一个版本应该就会支持了吧。

顺便给一个简单的例子:
from google.appengine.ext import db

class TestModel(db.Model):
  number = db.IntegerProperty()

PER_FETCH = 10
# 如果没有数据的话,就取消下面的注释来生成数据
#TOTAL_SIZE = 100
#entities = [0] * TOTAL_SIZE
#
#for i in xrange(TOTAL_SIZE):
#  entities[i] = TestModel(number=i)
#
#db.put(entities)

query = TestModel.all().filter('number < ', 50)
results = query.fetch(PER_FETCH)

while results:
  for result in results:
    print result.number,

  cursor = query.cursor()
  if not cursor: # 如果没有更多记录存在,那么游标会为None
    break

  query = query.with_cursor(cursor)
  results = query.fetch(PER_FETCH)
这个例子会遍历找出所有小于50的TestModel实体,本地测试成功,远程未尝试。

1条评论 你不来一发么↓ 顺序排列 倒序排列

    向下滚动可载入更多评论,或者点这里禁止自动加载

    想说点什么呢?