2013-07-02 50 views
1

docs,我知道Query.run()返回一個迭代和Query.fetch()返回一個列表。該文檔說,fetch()只是run()上的包裝,通常不應使用,因爲它更佔用內存。但是從我的(有限)體驗他們做同樣的事情:他們讓你循環查詢的結果。爲什麼fetch()存在?它的作用是什麼?它的效率低於run()在app引擎中,fetch()與run()不同?

回答

2

run()返回一個iterable,根據需要發出異步調用,以便在遍歷項目時從數據存儲中提取數據。如果您不遍歷整個結果集,它可能不會返回結果集中的所有實體。

fetch()基本上調用run(),遍歷整個結果集並將所有結果放入列表中。

如果使用fetch(),您將返回列表,然後再次遍歷它。

如果您絕對必須將所有數據都列入列表並在列表中進行操作,則fetch()往往會有所幫助。