python couchdb 版本冲突

标签 python database couchdb

我有一个 python 程序可以访问 couchDB 数据库、创建新文档并更新现有文档。 对于给定的数据库 db 和文档 Doc,我尽量在每次修改前小心并重新加载文档:

somedoc = Doc.load(db,id)

更新之前

doc.store(db)

据我所知,这不是必需的,因为每次调用存储时都应该更新 doc.rev。但是...我收到冲突消息:

couchdb.http.ResourceConflict: (u'conflict', u'Document update conflict.')

是否有任何方法可以强制不更新和警告消息,而不是在这些冲突时出现 fatal error 。或者,更好的是,是否有某种方法可以快速检查文档修订号 - 数据库正在被两个都更新的脚本访问,但两者都小心加载每个文档,快速进行修改并在尽可能短的时间内更新数据库以尽量减少冲突的可能性....

干杯

最佳答案

我仍然没有弄清楚资源冲突的来源,因为在存储文档之前我检查修订是否正确:

latestRev = CouchDoc.load(db,doc.id)
if latestRev.rev != doc.rev:
    print 'revision mismatch ' + doc.rev + '\t' + revs.rev
else:
    doc.store(db)

但是,有一个简单的方法可以解决导致 fatal error 的冲突(python 新手,所以之前没有想到这样做):

try:
    doc.store(db)
except couchdb.http.ResourceConflict:
    latestDoc = ConflictDoc.load(db,doc.id)

当 couchDB 抛出 ResourceConflict 时,这确实需要在再次存储之前重做 try 命令之前对文档的任何更新。

关于python couchdb 版本冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7796775/

相关文章:

database - PostgreSQL-数据文件

couchdb 设计 View ,更新文档创建字段

python - pandas cut(): how to convert nans?还是将输出转换为非分类?

python - 类型错误 : expected string or bytes-like object'

Android,将文件写入数据/数据/'package'文件夹的子目录的正确方法是什么

apache - PouchDB View 按键查找

javascript - CouchDB 查看搜索中的空白空间

python - 如何确定通过 `from m import *` 导入的内容?

python - 如何在测试覆盖期间忽略/省略/排除文件?

sql - 为我的 Web 应用程序生成虚拟数据 - 查找字典