如何解决KeyError:尝试在 couchdb 中获取视图内容时出现“行”
我开始制作 couchdb 数据库,但不幸的是我发现了一个让我停滞不前的错误。
{
"_id": "001169c8-16a9-400b-831d-61f4134e1cd3","_rev": "2-c95e7385f0ad6a249906a8a2e60341de","type": "word","word": "quién","creation-date": "2020-12-19T19:54:06.954539","sentences": {
"00789ff2-e38e-414b-a3f5-c2282aeeb42e": {
"sentence": "No sé quién se lo ha metido por la cabeza,dice que le pongo en ridículo si no voy","source": "foundation","date": "2020-12-19T19:47:48.114888"
},"01b40374-1103-4fd5-95dd-fd5d8eddbd21": {
"sentence": "— Y a vuestra merced,¿quién le fía,señor cura","date": "2020-12-19T19:43:10.510990"
}
}
}
并且我设计了一个视图来仅恢复这些文档的“单词”部分:
function (doc) {
if( doc.type == 'word')
emit(doc.word,1);
}
最后,在 python 中,我创建了一个简单的脚本来恢复该视图中的文档:
def processEntries( db : couchdb.Database ):
for row in db.iterview( '_design/all_words',100,group=True ) :
print( f"{row=}")
File "/home/rluna/wkcpp/lib/corpus_env/lib/python3.8/site-packages/couchdb/client.py",line 1041,in iterview
rows = list(self.view(name,wrapper,**options))
File "/home/rluna/wkcpp/lib/corpus_env/lib/python3.8/site-packages/couchdb/client.py",line 1361,in __len__
return len(self.rows)
File "/home/rluna/wkcpp/lib/corpus_env/lib/python3.8/site-packages/couchdb/client.py",line 1378,in rows
self._fetch()
File "/home/rluna/wkcpp/lib/corpus_env/lib/python3.8/site-packages/couchdb/client.py",line 1366,in _fetch
self._rows = [wrapper(row) for row in data['rows']]
KeyError: 'rows'
对正在发生的事情有什么想法吗?
解决方法
发现问题。首先,group=True
对于这个上下文是不正确的,因为我根本不想对结果进行分组。
其次,问题在于必须调用视图的方式。视图位于设计文档中,因此要唯一标识视图,您必须提供设计文档和视图文档的名称。换句话说,python代码必须这样改:
def processEntries( db : couchdb.Database ):
for row in db.iterview( 'all_words/all_words',100 ) :
print( f"{row=}")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。