Python PyMongo插入一个异常/错误处理
我正在努力确保我已经设置了错误处理。我不确定是否正确使用了try、except和return 所需的输出为真或假 如果文档插入成功,则为True,否则为False。我做对了吗?我担心的是,它总是会回到现实?不太清楚try/except是如何工作的。谢谢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
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捕获。再次感谢。