2017-08-06 41 views
0

我一直在使用python中的couchdb模塊來滿足一些項目需求。我很高興地使用couchdb的view方法從我的數據庫中檢索結果集直到最近。如何使用python的iterview函數couchdb

for row in db.view(mapping_function): 
    print row.key 

但是最近我一直需要使用比以前大得多的數據庫(〜15-20 Gb)。這是我遇到一個不幸的問題。

db.view()方法在你用它做任何事之前加載內存中的所有行。這對於小型數據庫不是問題,但是對於大型數據庫來說卻是一個大問題。

那是我碰到iterview函數。這看起來很有前途,但我找不到它的一個示例用法。有人份額能或點我iteview功能的使用例子在python-CouchDB的

感謝 - 一個

+0

如果您簡單地調用'iterview'的方式調用'view',會發生什麼? –

+0

它仍然回來的所有行。我甚至嘗試傳遞'批量'的值來限制退貨量,正如他們在文檔中所說的那樣。這種力量也有效 – Utopia

回答

0

這樣做幾乎是爲我工作:

import couchdb.client 
server = couchdb.client.Server() 
db = server['db_name'] 
for row in db.iterview('my_view', 10, group=True): 
    print row.key + ': ' + row.value 

我說這幾乎是可行的,因爲它確實返回所有數據並打印所有行。但是,在批處理結束時,它會在couchdb/client.py(行884)內的一個KeyError異常在iterview