Python, CouchDb: 如何通过ID更新已有文档
我想通过ID更新一个已经存在的文档。我的想法是先根据ID找到这个文档,然后把它的“firstName”用从“json”中得到的新值替换掉,最后把更新后的文档保存到CouchDB数据库里。
这是我的代码:
def updateDoc(self, id, json):
doc = self.db.get(id)
doc["firstName"] = json["firstName"]
doc_id, doc_rev = self.db.save(doc)
print doc_id, doc_rev
print "Saved"
//"json" is retrieved from PUT request (request.json)
在self.db.save(doc)这一行,我遇到了一个错误,提示是“值太多,无法解包”。
我使用的是Bottle框架,Python 2.7和Couch Query。
我该如何通过ID更新文档呢?正确的方法是什么?
1 个回答
3
在 couchdb-python 这个库里,db.save(doc)
这个方法会返回一个包含 _id 和 _rev 的元组。你现在使用的是 couch-query,这是一个稍微不同的项目,它也有一个 db.save(doc) 方法,但返回的结果 是不同的。所以你的代码应该像这样:
def updateDoc(self, id, json):
doc = self.db.get(id)
doc["firstName"] = json["firstName"]
doc = self.db.save(doc)
print doc['_id'], doc['_rev']
print "Saved"