如何使用Document Mapping类的ViewField将python couchdb中的视图同步到我的设计文档?

时间:2014-02-26 02:55:06

标签: python couchdb couchdb-python

我正在尝试使用python couchdb lib的Document映射类 但我发现文件非常不合适

它包含几行代码,介绍如何在您使用的Document子类上定义视图 但这些不与COuchDB设计文档同步。 我尝试在CouchDB设计文档(通过Futon)和我的python类中使用相同的代码编写相同的视图,但这不会同步它们。 我能够在其他库中使用视图,例如沙发查询 所以它不是意见本身就是问题 它们使用JavaScript或Python 不幸的是,我已经承诺使用DOcument子类来包含我想要与我的Document子类相关联的功能。我已经找到了关于如何使用直接Doc类将视图同步到CouchDB的其他好信息,而没有variuos字段类型提供的映射: Recommended approach for loading CouchDB design documents in Python? 和这里: http://markhaase.com/2012/06/23/couchdb-views-in-python/  但是他们没有关于使用映射文档子类

如何工作的文档

我使用了文档中描述的两种形式:

class Person(Document):
...     name = TextField()
...     age = IntegerField()
...     by_name = ViewField('people', '''\
...         function(doc) {
...             emit(doc.name, doc);
...         }''')

class Person(Document):
...     name = TextField()
...     age = IntegerField()
...
...     @ViewField.define('people')
...     def by_name(doc):
...         yield doc['name'], doc ( for Python views ):

当调用视图时它失败并立即显示为什么: 检查Futon显示视图不在设计文档中

如果我通过各种方式在设计文档中创建视图,则视图可以工作,但它没有连接到我的Document子类(本例中的Person类)。

我想我希望这会让你感觉更轻松 我虽然使用沙发查询获取视图结果并尝试将这些对象gerrymander到我的DOcument子类中的单独库python couchdb 但这似乎非常绝望和肮脏,我甚至无法轻易地访问沙发查询中的字典信息。 让我知道是否有人可以告诉我这是如何工作的。我怀疑有一个简单的答案在文档中完全没有,否则没有人会编写文档映射功能

1 个答案:

答案 0 :(得分:0)

欢迎任何想要为社区的利益解决这些问题的人, 我的答案是转到CouchDBKit库,我建议其他人也这样做。 与couchdb-python有很多相似之处,包括我想要的映射功能,但它是一个更好的维护库,带有下降文档,一个简单强大的架构,与Django和FormAlchemy的一些很好的集成,以及一些顶部的奖励CouchDB和文件系统,以及数据库更改侦听器。对于我的puroses,没有什么couchdb-python有couchdbkit没有。