Python 3 CouchDB单一更新与批处理

mbjcgjjk  于 2022-12-09  发布在  CouchDB
关注(0)|答案(1)|浏览(176)

这是我的第一篇文章:)所以我先道歉。我正在从mysql导出数据到couchdb,当一个条目保存后,我用最近更新的日期标记mysql条目。下面我有一个python函数,它接受一个json对象,一个接一个的对象和一些随机的id,在mysql本地更新:

def write_json_to_couchdb(json_obj, id):
    #couchdb auto create doc_id and rev
    doc_id = ''
    revision_or_exception = ''
    for (success, doc_id, revision_or_exception) in db.update(json_obj):
        print(success, doc_id, revision_or_exception)
        # mark id inside mysql db, so we know its been saved to couchdb
        mysql.update_item_date(id)

上面的这个解决方案是可行的,但是很慢,无论是写couchdb还是更新到mysql,我怎么才能使用“bulk API”或“batch api”,而不使用curl。我相信couchdb的db.update(item)也可以像这样使用db.update(dict_of_items)。我怎么才能指定“batch ok”。还有其他我不知道的方法吗?网上似乎有一些例子。
这会显著提高速度吗?还有,我如何指定“批处理大小”,比如说1000条记录。
以下是我认为更好的解决方案:

def write_json_to_couchdb_bulk(json_obj_list, id_list):
    doc_id = ''
    revision_or_exception = ''
    for (success, doc_id, revision_or_exception) in db.update(json_obj_list):
        print(success, doc_id, revision_or_exception)
        # update added_date with current datetime

    for id in id_list:
        mysql.update_item_date(id)

谢谢你,
开关

ttcibm8c

ttcibm8c1#

import couchdb
from couchdb import *

def write_json_to_couchdb_bulk(json_obj_list):
    for doc in db.update(json_obj_list):
        print(repr(doc))

json_obj_list = [
    Document(type='Person', name='John Doe'),
    Document(type='Person', name='Mary Jane'),
    Document(type='City', name='Gotham City')
]
write_json_to_couchdb_bulk(json_obj_list)

这是我想出的解决方案,它快得多。

相关问题