为CouchDB设置Python ViewServer
我正在努力学习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 个回答
我遇到了同样的“错误:访问视图时发生错误,没有响应”的问题,结果发现是我Python代码里的一个bug。具体来说,在我的JavaScript实现中,我写了类似这样的代码:
function (doc) {
emit(doc.somefield, doc);
}
我把它改成了:
def map(doc):
yield doc.somefield, doc
但是,这样做让我遇到了你所说的“没有响应”的错误。
把它改成下面这个就解决了问题。
def map(doc):
yield doc['somefield'], doc
我不知道在OSX系统中CouchDB的配置文件存放在哪里,但你可以通过Futon来设置Python查询服务器。在侧边栏点击“配置”,然后在页面底部点击“添加部分”,把你想写入local.ini的内容填进去。作为额外好处,你不需要重启CouchDB——通过HTTP API进行的配置更改会立即生效,但一定要确保你填写的值是正确的。