使用IBM bluemix和python中的cloudant-2.0.0b2检查文档是否存在

时间:2016-05-04 13:54:50

标签: python-2.7 ibm-cloud cloudant

我正在使用:

  • bluemix中的python应用程序
  • 链接到python应用程序的Bluemix cloudant v2.0.0b2数据库

根据https://pypi.python.org/pypi/cloudant/2.0.0b2,一切都从0.5升到2.0,他们仍在处理文档,因为一切都是Beta。接下来,我也是Python和数据库的新手。文档可以在这里找到: http://python-cloudant.readthedocs.io/en/latest/getting_started.html

我要做的是检查文档是否已存在。

我尝试过的事情:

<div id="container">
      <div>
        Some<br>very<br>high<br>text<br>that<br>uses<br>disgusting<br>BRs
      </div>
      <div>
        The short one
      </div>
    </div>

但是在检索文档之前代码失败了。我检查了源代码,它看起来应该是:

   from cloudant.account import Cloudant
    import time
    import json
    # Connect to the database
    client = Cloudant(*hidden*)
    client.connect()
    # The database we work in
    db = client['myDatabase']
    # The document we work on
    doc = db['myDocument']
    print doc.exists()

来源:https://pypi.python.org/pypi/cloudant/2.0.0b2

在检索文档之前,有没有办法检查文档是否存在?或者我应该检索它并发现错误?或者有不同的方法吗?

感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您所描述的行为是python-cloudant库数据库对象所需的行为,因此如果您打算使用数据库对象来检索文档并填充本地数据库缓存,则应该查看except a发生不存在的文档和句柄时的KeyError。但是,如果有兴趣在将文档带入本地数据库缓存之前捕获文档是否存在,那么将代码更改为:

from cloudant.account import Cloudant
from cloudant.document import Document

# Connect to the database
client = Cloudant(*hidden*)
client.connect()
# The database we work in
db = client['myDatabase']
# The document we work on
if Document(db, 'myDocument').exists():
    doc = db['myDocument']

会做到这一点。

同样你可以这样做:

from cloudant.account import Cloudant
from cloudant.document import Document

# Connect to the database
client = Cloudant(*hidden*)
client.connect()
# The database we work in
db = client['myDatabase']
# The document we work on
doc = Document(db, 'myDocument')
if doc.exists():
    doc.fetch()

但是这不会填充本地数据库缓存,db字典。