python - KeyError: 'rows' 在尝试获取 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",
"source": "foundation",
"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=}")
推荐阅读
- python - 如果我有形状 (32,256,256,3) 的输入,并且我想创建一个自定义损失函数,在 Keras 中复制以下等式
- python - 如何执行和杀死外部python程序
- r - dplr:取消嵌套矩阵列
- apache-calcite - 如何更改方解石的默认编码字符集?
- django - 何时使用 Django 权限?
- c++ - 是明确的专业模板吗?
- java - 字符串比较返回 false 而它们具有相同的值
- python - ctx 是必需的参数
- jenkins - 获取与特定 Jenkins 从属关联的作业名称
- c# - 从 .Net Core 运行 Powershell - 无法加载文件或程序集 Microsoft.Management.Infrastructure