在Google App Engine中一次获取100个结果



我希望有人能向我解释如何使用偏移量或光标在应用程序引擎。我使用gcloud远程访问实体进行大规模数据迁移,并希望批量抓取100个数据。

我猜有一种非常简单的方法可以做到这一点,但是文档并没有深入研究游标。以下是目前为止的内容:

client = datastore.Client(dataset_id=projectID)
# retrieve 100 Articles
query = client.query(kind='Article').fetch(100)
for article in query:
  print article

我如何标记这批100的末尾,然后进入下一批?非常感谢!

编辑:

我应该提到,我没有访问应用程序引擎环境,这就是为什么我现在有点迷路…(

我没有使用gcloud的任何经验,但我认为这应该不会有太大的不同。

当您查询时,您将使用fetch_page而不是fetch函数。fetch_page函数返回三样东西(结果、游标、更多)。游标是查询的书签,如果可能有更多的结果,则more为真。

处理完100个实体后,可以将urlsafe形式的游标传递给请求处理程序的URI,在那里将从新的游标开始继续处理。

from google.appengine.datastore.datastore_query import Cursor
class printArticles(webapp2.RequestHandler):
    def post(self):
        query = Client.query()
        #Retrieve the cursor. 
        curs = Cursor(urlsafe=self.request.get('cursor'))
        #fetch_page returns three things
        articles, next_curs, more = query.fetch_page(100, start_cursor=curs)
        #do whatever you need to do
        for article in articles:
            print article
        #If there are more results to fetch
        if more == True and next_curs is not None:
            #then pass along the cursor
            self.redirect("/job_URI?cursor=" + next_curs.urlsafe())

相关内容

  • 没有找到相关文章

最新更新