问题标签 [couchdb-python]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
499 浏览

python - couchdb-pythons ViewField中map函数的含义

我在我的一个项目中使用了couchdb.mapping。我有一个名为SupportCase派生的类,Document它包含我想要的所有字段。

我的数据库(称为admin)包含多种文档类型。我type在所有文档中都有一个字段,用于区分它们。我有许多类型的文档"case",我想使用视图来获取它们。我有一个设计文档support,里面有一个名为cases. 如果我使用 请求此视图的结果db.view("support/cases),我会返回一个Row包含我想要的 s 的列表。

但是,我想以某种方式将其包装在SupportCase类中,以便我可以调用单个函数并获取SupportCase系统中所有 s 的列表。我创建了一个ViewField属性

现在,如果我打电话SupportCase.all(db),我会收回所有案件。

我不明白的是这个视图是预先计算并存储在数据库中还是按需完成的,类似于db.query. 如果是后者,它会很慢,我想使用预先计算的视图。我怎么做?

0 投票
2 回答
1157 浏览

django - 如何在 Django 模板中显示 couchdb 图像附件

我在 Django 中使用 couchdb-python。我正在寻找一种在模板中显示图像(作为文档附件存储在数据库中)的方法。奇怪的是,我在网上找不到任何关于如何做到这一点的例子。

目前,在 views.py 我有这样的事情:

然后,在模板 display.html 中:

我看到文字很好,但对于图像我只看到以下内容:{u'stub':True, u'length':27018,u'revpos':19,u'content_type': u'image/jpeg '}

所以,很明显我没有传递实际的图像,或者无论如何都没有正确显示它。奇怪的是,我无法在网上找到如何实际执行此操作的示例。谁能给我指一个,或者在这里提供?

0 投票
2 回答
208 浏览

python - 有没有办法使用 couchdb-python 获取对 CouchDB 的即席查询的时间(以毫秒为单位)?

我通过其 query() 函数在 couchdb-python 中使用临时 JavaScript 映射函数。有没有办法获得处理查询所需的时间?

我已经尝试过为脚本计时,但对我来说很明显我得到的时间不正确。如果我遍历 query() 函数返回的 ViewResult 并打印所有结果,我相信我会得到一个更接近事实的答案,但我不希望打印包含在我的计时中。

有人有什么想法吗?

非常感谢!

0 投票
1 回答
1503 浏览

couchdb - 如何确定 CouchDB 数据库的所有可能键?

我正在创建一个应用程序,其中对于每个产品我都有一个数据库,我将根据日期创建不同的文档。文档中的密钥可能不同,并且取决于用户,他提供的内容。假设用户将继续提供相同的密钥来跟踪随时间变化的值。最后,在创建自动视图之前,我需要知道所有可能的键。

示例:如果我有数据库,比如说,测试。它包含,比如说,两个文件,

然后我想列出这个数据库中的所有键。因此,答案应该是 _id、_rev、type、content 等。

这些密钥是动态的并且取决于用户。所以,我不能假设我事先就认识他们。

0 投票
1 回答
387 浏览

couchdb - CouchDB 在第一次索引中途停止并出现套接字错误 54

我正在尝试按日期对我的 Mac 本地 CouchDB 数据库中的约 13,000 个文档进行排序,但它每次都挂在文档 5407 上。我试过增加 Futon 的超时容限,但无济于事。这是我收到的错误消息:

对于 db.view('index15/by_date_time', startkey=start, endkey=end) 中的行:文件“/Library/Python/2.6/site-packages/CouchDB-0.8-py2.6.egg/couchdb/client.py ",第 984 行,在迭代中 文件“/Library/Python/2.6/site-packages/CouchDB-0.8-py2.6.egg/couchdb/client.py”,第 1003 行,行文件“/Library/Python/2.6/site-packages/CouchDB- 0.8-py2.6.egg/couchdb/client.py”,第 990 行,在 _fetch 文件“/Library/Python/2.6/site-packages/CouchDB-0.8-py2.6.egg/couchdb/client.py”中,第 880 行,在 _exec 文件“/Library/Python/2.6/site-packages/CouchDB-0.8-py2.6.egg/couchdb/http.py”中,第 393 行,在 get_json 文件中“/Library/Python/2.6/site -packages/CouchDB-0.8-py2.6.egg/couchdb/http.py”,第 374 行,在获取文件“/Library/Python/2.6/site-packages/CouchDB-0.8-py2.6.egg/couchdb/ http.py”,第 419 行,在 _request 文件中“/Library/Python/2.6/site-packages/CouchDB-0.8-py2.6.egg/couchdb/http.py”,第 239 行,在请求文件中“/Library/ Python/2.6/site-packages/CouchDB-0.8-py2.6。egg/couchdb/http.py”,第 205 行,在 _try_request_with_retries socket.error: 54

顺便说一句,这与我的脚本中有错字时产生的错误消息相同。

我正在使用 couchpy 创建视图,如下所示:

def dateTimeToDocMapper(doc):

当它运行时,我可以打开一个 python shell 并使用 server.tasks() 我可以看到索引确实在发生。

>>> server.tasks()

[{u'status': u'Processed 75 of 13567 changes (0%)', u'pid': u'<0.451.0>', u'task': u'gmail2 _design/index11', u'type ': u'查看组索引器'}]

但每次它卡在 13567 个更改的进程 5407 上时(需要大约 8 分钟才能达到这个程度)。我检查了我认为是文件 5407 的文件,它似乎没有任何异常。

顺便说一句,如果我在进程停止后尝试重新启动进程,我会从 server.tasks() 得到这个响应

>>> server.tasks()

[{u'status': u'Processed 0 of 8160 changes (0%)', u'pid': u'<0.1224.0>', u'task': u'gmail2 _design/index11', u'type ': u'查看组索引器'}]

换句话说,couchDB 似乎已经认识到它已经处理了 13567 个更改中的前 5407 个,现在只剩下 8160 个了。

但随后它几乎立即退出并给了我相同的 socket.error: 54

在过去的几个小时里,我一直在互联网上搜索,但无济于事。我曾尝试从其他位置(例如 Futon)启动索引。正如我所提到的,我的错误之一是操作系统超时错误,增加 Futon 配置中的超时阈值似乎对此有所帮助。

请,如果有人能阐明这个问题,我将非常感激。我想知道是否有办法在它已经索引 5407 个文档后重新启动该过程,或者更好的是,如果有一种方法可以防止事情从一开始就退出 1/3。

非常感谢。

0 投票
2 回答
3439 浏览

python - couchdb-python 更改通知

我正在尝试使用 couchdb.py 创建和更新数据库。我想实施通知更改,最好是在连续模式下。运行下面发布的测试代码,我看不到更改方案在 python 中是如何工作的。

价值

返回感兴趣的信息,但以我尚未弄清楚如何提取序列号或修订号或文档信息的格式:

同时,我真正感兴趣的代码是:

返回一个生成器对象,并且在它们进入时似乎不提供通知,正如 CouchDB指南所建议的那样......

有没有人成功使用过 couchdb-python 中的更改?

0 投票
1 回答
287 浏览

python - 使用 couchdb.mapping 并且无法设置属性

大家好,couchdb 专业人士,

我有一个这样的映射设置:

我有一个名为 getById 的函数,它接受一个 id 并通过以下方式返回一个产品:

我有一个问题:当我加载特定产品并尝试设置返回的字典时:

注意: 我最近才修改模型以具有“返回”键。使用 getById 获得的旧产品对象中没有“返回”键。这会有所作为吗?它不应该是正确的,毕竟这是一个文档数据库,它应该是灵活的,对吧?

为什么设置“原因”属性后 product.returned 仍然返回一个空字典?

我做了一些调试并意识到产品变量的形式是:

这是一个什么样的结果?它是视图结果还是文档?

非常感谢任何帮助,谢谢!

谢谢。

0 投票
2 回答
566 浏览

python - 如何在 CouchDB 中存储 os.urandom(8) 的输出?

我正在尝试在 couchdb 中存储一些加密数据。我需要在 couchdb 中存储盐和加密密码。盐是使用 python 的 os.urandom(8) 生成的,其示例输出如下所示:

我正在使用 python-couchdb api 来存储文档。当我尝试保存文档时,我得到:

0 投票
2 回答
746 浏览

python - 金字塔资源:简单的英语

我一直在阅读对我新创建的 Pyramid 应用程序实施授权(和身份验证)的方法。我不断地碰到一个叫做“资源”的概念。我在我的应用程序中使用 python-couchdb 而根本不使用 RDBMS,因此没有 SQLAlchemy。如果我像这样创建一个 Product 对象:

有人可以告诉我这是否也称为资源?我一直在阅读 Pyramids 的整个文档,但它没有用简单的英语解释资源这个术语(也许我只是愚蠢)。如果这是资源,这是否意味着我只是把我的 ACL 东西贴在这里:

如果我还要使用 Traversal,这是否意味着我在我的 python-couchdb 产品类/资源中添加了getitem函数?

抱歉,这真的让所有新术语感到困惑(我来自 Pylons 0.9.7)。

提前致谢。

0 投票
1 回答
817 浏览

couchdb - 在 CouchDB 中快速降低插入速度

我正在处理一些输入文件并将获得的记录作为 CouchDB 文档插入。我注意到插入速度随着数据库大小的增加而降低。

我要做的是:

  1. 从输入文件中读取数据
  2. 处理数据以获得结构化文档
  3. 将文档放入本地缓冲区
  4. 一旦缓冲区有 1000 个文档,就执行一个 couchdb 批量插入
  5. 重复直到输入数据被完全处理

这里有我当前运行的日志:

“速率”显示了最后一千个文档的插入速率,正如您所看到的,它正在迅速下降。

  • 这是正常的吗?
  • 我可以做些什么来保持高插入率吗?
  • 您是否有使用大型 CouchDB 数据库的经验。
  • 您想分享任何建议吗?