我有一個約9百萬行的查詢結果集。使用Python/PyGreSQL,我如何有效地處理大型結果集?
我需要爲每一行做一些處理,並且代碼目前做到這一點:
query = conn.query(sql)
results = query.getresult()
for row in results:
# blah
我不知道,但我想,getresult()
被拉下整個結果集。是這樣嗎?我想有一種方法可以根據需要將結果集的塊大小分開,但在pg
模塊文檔中我沒有立即看到類似結果。
是否有可能使用pgdb
模塊來代替這個模塊,或者使用其他方法?
我的問題是關於應用程序機器上的內存 - 如果我能幫上忙,我寧願不將一百萬行同時載入內存。
這更值得擔心嗎?
根據pygresql文檔,getresult返回一個pyquery對象,其中各種列表包含關聯查詢的所有數據。您需要查看python的替代數據庫訪問庫是否包含查詢結果的迭代器。 –