Python 2.7 使用IBMBlueMix和Python中的cloudant-2.0.0b2检查文档是否存在

Python 2.7 使用IBMBlueMix和Python中的cloudant-2.0.0b2检查文档是否存在,python-2.7,ibm-cloud,cloudant,Python 2.7,Ibm Cloud,Cloudant,我正在使用: Bluemix中的Python应用程序 链接到Python应用程序的Bluemix cloudant v2.0.0b2数据库 据了解,从0.5版到2.0版的所有内容都已中断,他们仍在编写文档,因为所有内容都是Beta版。除此之外,我还不熟悉Python和数据库。文档可在此处找到: 我要做的是检查文档是否已经存在 我尝试过的事情: from cloudant.account import Cloudant import time import json

我正在使用:

  • Bluemix中的Python应用程序
  • 链接到Python应用程序的Bluemix cloudant v2.0.0b2数据库
据了解,从0.5版到2.0版的所有内容都已中断,他们仍在编写文档,因为所有内容都是Beta版。除此之外,我还不熟悉Python和数据库。文档可在此处找到:

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

我尝试过的事情:

   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()
但是代码在检索文档之前失败。我检查了源代码,它看起来应该是:

  def __getitem__(self, key):
        if key in list(self.keys()):
            return super(CouchDatabase, self).__getitem__(key)
        if key.startswith('_design/'):
            doc = DesignDocument(self, key)
        else:
            doc = Document(self, key)
        if doc.exists():
            doc.fetch()
            super(CouchDatabase, self).__setitem__(key, doc)
            return doc
        else:
            raise KeyError(key)
资料来源:


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

您描述的行为是python cloudant库数据库对象所需的行为,因此,如果您打算使用database对象检索文档并填充本地数据库缓存,则应在不存在文档的情况下查找
键错误,并进行相应处理。但是,如果您想在将文档放入本地数据库缓存之前捕获文档是否存在,请将代码更改为:

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
字典。

您描述的行为是python cloudant库数据库对象所需的行为,因此,如果您打算使用database对象检索文档并填充本地数据库缓存,则应在不存在文档的情况下查找
键错误,并进行相应处理。但是,如果您想在将文档放入本地数据库缓存之前捕获文档是否存在,请将代码更改为:

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
字典。

您可以编辑格式以使代码块更易于阅读吗?您可以编辑格式以使代码块更易于阅读吗?仅供参考-cloudant python库现在已经过了测试版,处于2.0.0稳定版本。在这一点上,文档也相当全面。我的答案的代码片段假设正在使用库的2.0.0.b2版本。仅供参考-cloudant python库现在已经过了测试版,处于2.0.0稳定版本。在这一点上,文档也相当全面。我的答案的代码片段假定正在使用库的2.0.0.b2版本。