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数据库
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版本。