0

我希望有人能向我解釋如何在App Engine中使用偏移量或遊標。我使用gcloud到一個巨大的數據遷移遠程訪問的實體,並想在我猜有一個非常簡單的方法來做到這一點的100在Google App Engine中一次抓取100個結果

批次搶數據,但文檔不跳入遊標太多。這是我到目前爲止:

client = datastore.Client(dataset_id=projectID) 

# retrieve 100 Articles 
query = client.query(kind='Article').fetch(100) 

for article in query: 
    print article 

我怎麼能標記該批100的結束,然後進入下一個?非常感謝!

編輯:

我要指出,我沒有訪問應用程序引擎的環境,這就是爲什麼我有點此刻失去了... :(

回答

1

我不有gcloud任何經驗,但我不認爲這應該是太不一樣了。

當您查詢,您將使用fetch_page代替功能的fetch_page函數返回的三件事(R結果,遊標,更多)。光標是查詢的書籤,如果可能有更多結果,則更多爲真。

一旦處理了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()) 
+0

雖然您是正確的,但如果您不在應用程序引擎環境中,這將無法在gcloud中工作,因爲您需要訪問Cursor類......我無法從隨機訪問它,運行磨py python文件。 – Kris