【发布时间】:2018-04-03 16:34:22
【问题描述】:
我有一个数据库,我想截断所有记录,我知道可以为每个文档添加一个 _deleted 键或在 CouchDB-python 库上调用 db.delete()。我正在使用 couchdb-python 的delete,但是当我获取所有文档然后在除设计文档之外的每个文档上调用 .delete 时,它似乎不起作用。
这是我的代码。
docs = get_db().view('_all_docs', include_docs=True)
for i in docs:
if not(i['id'].startswith('_')):
get_db().delete(i)
这是错误。因为_all_docs 的结果返回的是id 而不是_id。
File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\couchdb\client.py", line 625, in delete
if doc['_id'] is None:
KeyError: '_id'
我的问题是如何获取返回 _id 而不仅仅是 id 的所有文档?或者有什么办法解决这个问题?
【问题讨论】:
-
你为什么要这个?删除并重新创建数据库不是更容易吗?
-
如果我删除数据库,那么我必须重新创建所有视图?那正确吗?抱歉,我对 Couch 还很陌生。 @Flimzy
-
是的。但希望你有一个简单的方法来做到这一点。
-
删除时需要使用 i['id'] 吗?
-
这就是问题所在,我需要
_id'进行删除,但 Couch 正在返回'id'。 @Istvan
标签: python-3.x couchdb couchdb-python couchdb-2.0