使用文档上下文管理器,如果文档不存在,会有什么行为?

2024-05-20 22:31:01 发布

您现在位置:Python中文网/ 问答频道 /正文

python cloudant库有一个上下文管理器来简化对文档的处理:

# Upon entry into the document context, fetches the document from the
# remote database, if it exists. Upon exit from the context, saves the
# document to the remote database with changes made within the context. 
with Document(database, 'julia006') as document:
    # The document is fetched from the remote database
    # Changes are made locally
    document['name'] = 'Julia'
    document['age'] = 6
    # The document is saved to the remote database

Source: http://python-cloudant.readthedocs.io/en/latest/document.html

如果远程文档不存在,该行为是什么?文档是否设置为None,或者是否引发异常?你知道吗


Tags: thetofrom文档管理器remoteiswith
2条回答

如您所见,如果文档不存在,则在调用fetch()时会引发异常。但它将在除块中处理。如果错误代码不是404,则将重新引发异常。所以对于404以外的所有错误代码,您将得到一个异常。你知道吗

def __enter__(self):
    """
    Supports context like editing of document fields.  Handles context
    entry logic.  Executes a Document.fetch() upon entry.
    """

    # We don't want to raise an exception if the document is not found
    # because upon __exit__ the save() call will create the document
    # if necessary.
    try:
        self.fetch()
    except HTTPError as error:
        if error.response.status_code != 404:
            raise

    return self

如果远程数据库中不存在该文档,则会在远程数据库中为您创建该文档。你知道吗

相关问题 更多 >