PyMon go insert_one исключение / обработка ошибок - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь убедиться, что настроил обработку ошибок. Я не уверен, что использую try, кроме и возвращаюсь правильно.

Требуемое значение: True или False True, если документ вставлен успешно, False, если нет. Правильно ли я это сделал? Мое беспокойство в том, что оно всегда вернет истину? Не совсем уверен, как попробовать / кроме работает. Спасибо.

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()

1 Ответ

1 голос
/ 05 февраля 2020

Я не вижу, чтобы write_concern передавался как опция для ваших записей, я бы предположил, что вы можете не видеть WriteConcernError. Проверьте это: pymon go .write_concern.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()
...