Python PyMongo插入一个异常/错误处理

Python PyMongo插入一个异常/错误处理,python,mongodb,pymongo,Python,Mongodb,Pymongo,我正在努力确保我已经设置了错误处理。我不确定是否正确使用了try、except和return 所需的输出为真或假 如果文档插入成功,则为True,否则为False。我做对了吗?我担心的是,它总是会回到现实?不太清楚try/except是如何工作的。谢谢 import json import pymongo from bson import json_util from pymongo import MongoClient from pymongo import errors connectio

我正在努力确保我已经设置了错误处理。我不确定是否正确使用了try、except和return

所需的输出为真或假 如果文档插入成功,则为True,否则为False。我做对了吗?我担心的是,它总是会回到现实?不太清楚try/except是如何工作的。谢谢

import json
import pymongo
from bson import json_util
from pymongo import MongoClient
from pymongo import errors

connection = MongoClient('localhost', 27017)
db = connection['city']
collection = db['inspections']

def insert_document(documentToInsert):
    try:
      collection.insert_one(documentToInsert)
      return True
    except WriteConcernError as wce:
      print(wce)
      return False
    except WriteError as we:
      print(we)
      return False


def main():
    document = { 
      "id" : "11111-2019-ENFO",
      "certificate_number" : 9278806,
      "business_name" : "TAXOLOGY",
      "date" : "Feb 20 2015",
      "result" : "No Violation Issued",
      "sector" : "Accounting - 111",
      "address" :
      {
        "city" : "MISSION HILLS",
        "zip" : 91401,
        "street" : "Sepulveda",
        "number" : 1809
      }
    }

    print(insert_document(document))

main()
我没有看到任何作为写入选项传入的内容,我假设您可能没有看到
writeconcern
。检查此项:有关如何设置
WriteConcern
的示例。此外,仅当您希望在发生特定类型的错误时执行特定功能时,才需要这些错误检查,因为您只需返回
True
/
False
,然后可以删除所有这些错误检查:

代码:

connection = MongoClient('localhost', 27017)
db = connection['city']
collection = db['inspections']


def insert_document(documentToInsert):
    try:
        collection.insert_one(documentToInsert)
        return True
    except Exception as e:
        print("An exception occurred ::", e)
        return False


def main():
    document = {
        "id": "11111-2019-ENFO",
        "certificate_number": 9278806,
        "business_name": "TAXOLOGY",
        "date": "Feb 20 2015",
        "result": "No Violation Issued",
        "sector": "Accounting - 111",
        "address":
        {
            "city": "MISSION HILLS",
            "zip": 91401,
            "street": "Sepulveda",
            "number": 1809
        }
    }

    print(insert_document(document))


main()
我没有看到任何作为写入选项传入的内容,我假设您可能没有看到
writeconcern
。检查此项:有关如何设置
WriteConcern
的示例。此外,仅当您希望在发生特定类型的错误时执行特定功能时,才需要这些错误检查,因为您只需返回
True
/
False
,然后可以删除所有这些错误检查:

代码:

connection = MongoClient('localhost', 27017)
db = connection['city']
collection = db['inspections']


def insert_document(documentToInsert):
    try:
        collection.insert_one(documentToInsert)
        return True
    except Exception as e:
        print("An exception occurred ::", e)
        return False


def main():
    document = {
        "id": "11111-2019-ENFO",
        "certificate_number": 9278806,
        "business_name": "TAXOLOGY",
        "date": "Feb 20 2015",
        "result": "No Violation Issued",
        "sector": "Accounting - 111",
        "address":
        {
            "city": "MISSION HILLS",
            "zip": 91401,
            "street": "Sepulveda",
            "number": 1809
        }
    }

    print(insert_document(document))


main()

很抱歉问了个愚蠢的问题,但什么是:,这是某种格式还是您只是在打印这些字符。但我的另一个问题是,如果collection.insert\u one有一个错误,它是否仍然返回True还是跳过该错误?@Etra:
这就像我们打印它一样,在一起打印时在文本和实际异常之间留出一些空间,如果
collection.insert\u one
有错误,则应在
处处理,但
除外,函数返回
False
。。您可以通过在文档中传递
\u id:123
来测试它,并尝试插入同一文档两次-就像在mongo中一样
\u id
在默认情况下是唯一的,它会抛出一个错误并在expect中打印错误,然后按函数返回
False
。这确实会清除它,我不确定如何实际获得一个错误来测试它,但是我完全忘了。我更好地理解try/else now和error捕获。再次感谢。对于这个愚蠢的问题,我很抱歉,但什么是:,是一些格式设置还是您只是在打印这些字符。但我的另一个问题是,如果collection.insert\u one有一个错误,它是否仍然返回True还是跳过该错误?@Etra:
这就像我们打印它一样,在一起打印时在文本和实际异常之间留出一些空间,如果
collection.insert\u one
有错误,则应在
处处理,但
除外,函数返回
False
。。您可以通过在文档中传递
\u id:123
来测试它,并尝试插入同一文档两次-就像在mongo中一样
\u id
在默认情况下是唯一的,它会抛出一个错误并在expect中打印错误,然后按函数返回
False
。这确实会清除它,我不确定如何实际获得一个错误来测试它,但是我完全忘了。我更好地理解try/else now和error捕获。再次感谢。