我应该将哪个Python客户端库用于CouchdB?

时间:2009-10-20 18:23:06

标签: python couchdb

我开始尝试使用CouchDB,因为它看起来像是我们遇到的某些问题的完美解决方案。鉴于所有工作都将在一个没有遗留依赖关系的全新项目上,您建议使用哪个客户端库,以及为什么?

如果我们使用的操作系统有任何重叠,这将更容易。 FreeBSD在其ports集合中只有py-simplecouchdb已经可用,但该库的项目网站说使用CouchDBKit代替。这些都没有Ubuntu,它只与CouchDB一起发布。由于这两个操作系统没有共同的库,我可能会从源代码安装一些东西(如果我有时间的话,希望将软件包提交给Ubuntu和FreeBSD人员。)

对于那些感兴趣的人,我想使用CouchDB作为在各种服务之间传递的数据的便利中间存储位置 - 考虑消息总线系统但不太正式。例如,我们有守护进程下载和解析网页,然后将有趣的位发送到其他守护进程以进行进一步处理。很多这些对象在运行时都是不明确的(“这里有一些HTML,加上一组元数据,还有一些要在其上运行的动作”)。而不是将其序列化为ad-hoc本地网络协议或将其粘贴在PostgreSQL中,我宁愿使用为此目的而设计的东西。我们目前在此角色中使用NetWorkSpaces,但它几乎没有广泛的支持或CouchDB的用户社区。

6 个答案:

答案 0 :(得分:5)

我一直在使用couchdb-python取得了相当大的成功,据我所知,desktopcouch的人在ubuntu中使用它。先决条件是非常基本的,你应该没有问题:

  • httplib2的
  • simplejson或cjson
  • 的Python
  • CouchDB 0.9.x(早期版本或更高版本不太可能正常工作,因为界面仍在改变)

对我来说,一些优点是:

  • Pythonic界面。您可以使用数据库,就像它是一个字典。
  • 设计文档的界面。
  • 允许在Python中编写视图函数的CouchDB视图服务器

它还提供了几个命令行工具:

  • couchdb-dump:写入CouchDB数据库的快照
  • couchdb-load:读取由couchdb-dump生成的MIME多部分文件,并将所有文档,附件和设计文档加载到CouchDB数据库中。
  • couchdb-replicate:可用作更新通知脚本,以在数据更改时触发数据库之间的复制。

答案 1 :(得分:2)

如果你还在考虑CouchDB,那么我会推荐Couchdbkit(http://www.couchdbkit.org)。它非常简单,可以快速获得挂机并在运行Karmic Koala的机器上正常运行。在此之前,我已经尝试过couchdb-python,但是有些错误(可能现在已经解决了),httplib给了我一些错误(重复的文件......等),但是Couchdbkit让我起步并走到目前为止没有任何问题。

答案 2 :(得分:1)

spycouch

CouchDB的简单Python API

用于轻松管理CouchDB的Python库。

与网上常见的库相比,使用最新版本CouchDB - 1.2.1

功能

  

在服务器上创建一个新数据库

     

从服务器删除数据库

     

列出服务器上的数据库

     

数据库信息

     

数据库压缩

     

创建地图视图

     

地图视图

     

在DB

中列出文档      

从DB获取文档

     

将文档保存到DB

     

从DB中删除文档

     

编辑文件

spycouch on>> https://github.com/cernyjan/repository

答案 3 :(得分:0)

考虑到您尝试解决的任务(分布式任务处理),您应该考虑使用为消息传递而设计的众多工具之一,而不是使用数据库。例如,请参阅this SO question on running multiple tasks over many machines

如果您真的想要一个简单的随意消息传递系统,我建议您将注意力转移到MorbidQ。当您变得更加严肃时,请使用RabbitMQActiveMQ。这样,您可以减少系统中的延迟,并避免让许多客户端轮询数据库(从而锤击该计算机)。

我发现avoiding databases is a good idea(那是我的博客) - 我这里有一个end-to-end live data system running using MorbidQ

答案 4 :(得分:0)

我编写了一个基于python-requests构建的couchdb客户端库(在大多数发行版中)。我们在生产中使用这个库。

https://github.com/adamlofts/couchdb-requests

  

使用python-requests的强大CouchDB Python接口。

目标:

  • 只有一种方法可以做某事
  • 快速稳定(连接汇集)
  • 明确比隐含更好。缓冲区大小,连接池大小。
  • 指定查询参数,查询函数中没有**参数

答案 5 :(得分:0)

浏览了许多couchdb python库的文档后,我选择 pycouchdb

所有我需要知道的都是从文档中快速掌握:https://py-couchdb.readthedocs.org/en/latest/它就像一个魅力。

此外,它适用于Python 3。