2017-08-06 7 views
0

私はいくつかのプロジェクトのニーズを満たすためにpythonでcouchdbモジュールを使用しています。最近までcouchdbのビューメソッドを使用してデータベースから結果セットを取得していました。 python couchdbからiterview関数を使用する方法

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

しかし、最近私は前に(〜15-20ギガビット)よりもサイズが多く、より大きなデータベースを操作する必要がされています。これは私が不幸な問題に遭遇したときです。

db.view()メソッドは、メモリ内のすべての行をロードしてから、何かを行うことができます。これは小さなデータベースでは問題ではありませんが、大きなデータベースでは大きな問題です。

これは私がiterviewの機能を見つけたときです。これは有望に見えますが、私はそれの使用例を見つけることができませんでした。誰かのシェアがまたはのpython-CouchDBの

おかげでiteview機能の使用例に私を指すことができます -

+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 

私はそれがないので、それはほとんどの作品と言いますすべてのデータを返し、すべての行が出力されます。しかし、バッチの終わりに、iterviewのcouchdb/client.py(行884)にKeyError例外がスローされます。

関連する問題