2012-06-06 21 views

回答

3

run()方法只是設置運行查詢(並在生產中,在後臺啓動RPC調用)所需的條件。爲了使您的查詢具有任何數據知識(遊標或其他),您需要通過耗盡查詢來獲取結果。

>>> query = Model.all() 
>>> query_iterator = query.run(limit=5) 
>>> query.cursor() 
'' 
>>> list(query_iterator) # Exhaust iterator 
[<db.Model instance at 0x...>, ...] 
>>> query.cursor() 
'E-ABAIICG2oMYXByaWdvbmluamE0cgsLEgVNb2RlbBgKDBQ=' 
+0

謝謝tdavis! – wombatonfire

+0

謝謝!救了我 –

1

Query.run()(或簡單地迭代Query的實例)返回迭代器。當你得到查詢的光標時,它甚至沒有開始提取任何東西。我想,在你的情況 - 當你要使用遊標 - fetch()將會很好。

在你真正需要它的情況下,這應該做的伎倆:

def queryArticles(status=1, limit=10, **offset): 
    query = Article.all().filter('status =', status).order('-modified') 
    articles = query.run(limit=limit, batch_size=limit, **offset) 
    articles = articles.next() 
    cursor = query.cursor() 
    return articles, cursor 
+0

謝謝伊戈爾! fetch()對我很有好處,因爲文章會轉到jinja輸出。但是因爲我喜歡理解我寫的東西,所以我對fetch()和run()之間的區別感興趣。 GAE文檔只說fetch()是run()的一個包裝器, – wombatonfire

相關問題