为CouchDB设置Python ViewServer

2 投票
2 回答
966 浏览
提问于 2025-04-17 19:22

我正在努力学习CouchDB。作为一个相对新手的Python用户,我想设置一个视图服务器,这样我就可以把Python函数传递给couchdb.design.ViewDefinitions函数。根据我的理解,ViewDefinitions需要执行JavaScript代码来进行映射/归约功能。

我现在有点困惑——我知道这可能是个基础问题。根据维基百科的介绍(http://wiki.apache.org/couchdb/View_server):

要在CouchDB中注册查询服务器,需要在local.ini文件中为每个服务器添加一行。基本的语法是: '[query_servers] python=/usr/bin/couchpy'

那么,我该如何访问local.ini文件呢?我使用的是10.6.8版本的Mac。谢谢!

更新:谢谢Kxepal。似乎我已经能够在Futon中用Python创建设计/视图。或者,我发现可以这样创建Python视图服务器: curl -X PUT http://[localhost]/_config/query_servers/python '"/path/to/couchpy"'

不过,我仍然无法执行Python脚本。在Couch上运行视图时出现以下错误: '错误:访问视图时发生错误,没有响应'

如果有人能给我指个方向,我将不胜感激。谢谢!

2 个回答

4

我遇到了同样的“错误:访问视图时发生错误,没有响应”的问题,结果发现是我Python代码里的一个bug。具体来说,在我的JavaScript实现中,我写了类似这样的代码:

function (doc) {    
    emit(doc.somefield, doc);
}

我把它改成了:

def map(doc):
    yield doc.somefield, doc

但是,这样做让我遇到了你所说的“没有响应”的错误。

把它改成下面这个就解决了问题。

def map(doc):
        yield doc['somefield'], doc
2

我不知道在OSX系统中CouchDB的配置文件存放在哪里,但你可以通过Futon来设置Python查询服务器。在侧边栏点击“配置”,然后在页面底部点击“添加部分”,把你想写入local.ini的内容填进去。作为额外好处,你不需要重启CouchDB——通过HTTP API进行的配置更改会立即生效,但一定要确保你填写的值是正确的。

撰写回答