Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中加载CouchDB设计文档的推荐方法?_Python_Couchdb - Fatal编程技术网

在Python中加载CouchDB设计文档的推荐方法?

在Python中加载CouchDB设计文档的推荐方法?,python,couchdb,Python,Couchdb,我对coach非常陌生,但我正尝试在一个新的Python项目中使用它,我还想使用Python编写设计文档(视图)。我已经将coach配置为使用couchpy view服务器,我可以通过在Futon中输入一些简单的map/reduce函数来确认这一点 在使用Python的couchdb模块时,有没有关于如何加载/同步设计文档的官方建议 我知道我可以发布设计文档,将它们“安装”到沙发上,但我的问题实际上是关于最佳实践。我需要某种在开发环境和生产环境中进行部署的策略。我的直觉是创建一个目录并将我所有的

我对coach非常陌生,但我正尝试在一个新的Python项目中使用它,我还想使用Python编写设计文档(视图)。我已经将coach配置为使用couchpy view服务器,我可以通过在Futon中输入一些简单的map/reduce函数来确认这一点

在使用Python的couchdb模块时,有没有关于如何加载/同步设计文档的官方建议

我知道我可以发布设计文档,将它们“安装”到沙发上,但我的问题实际上是关于最佳实践。我需要某种在开发环境和生产环境中进行部署的策略。我的直觉是创建一个目录并将我所有的设计文档存储在那里,然后编写某种同步脚本将每个文档上传到coach中(可能只是盲目地覆盖已经存在的内容)。这是个好主意吗

“”的文档有5句话,实际上只是解释了如何安装couchpy。在上,提到了一个couchdb.design模块,听起来可能会有所帮助,但没有文档(我可以找到)。该模块的源代码表明它完成了我感兴趣的大部分工作,但它没有真正加载文件。我想我应该做一些模块发现,但我听说这不是Pythonic。建议

编辑:


特别是,将map/reduce函数存储在字符串文本中的想法似乎完全是不成熟的。我想用真正的模块、真正的包和真正的单元测试来编写真正的python代码。我希望定期将我的“沙发视图”包与couchdb实例同步。

这里有一种似乎合理的方法。首先,我创建了couchdb.design.ViewDefinition子类。(为了简洁起见,删除了注释和pydocs。)

现在,如果要同步:

import couchdb.design
from couchview.version import CurrentVersion

db = get_couch_db() # omitted for brevity
couchdb.design.ViewDefinition.sync_many(db, [CurrentVersion()], remove_missing=True)
这种方法的好处是:

  • 组织。所有设计/视图都作为模块/类(分别)存在于单个包中
  • 真代码。我的文本编辑器将突出显示语法。我可以针对map/reduce函数编写单元测试
  • ViewDefinition子类也可用于查询

    current_version_view = couchview.version.CurrentVersion()
    result = current_version_view(self.db, key=version_key)
    
    它还没有准备好投入生产,但我认为这比在字符串文本中存储map/reduce函数更近了一大步

    编辑:我最终就这个话题写了几篇博文,因为我找不到任何其他的建议来源:

    current_version_view = couchview.version.CurrentVersion()
    result = current_version_view(self.db, key=version_key)