Конвертировать в JSON - PullRequest
0 голосов
/ 14 мая 2018

Сбой SQL: INSERT INTO \ "brand \" (\ "brand_id \", \ "name \", \ "Notification_email \", \ "Notification_phone \", \ "made_at \", \ "updated_at \") ЗНАЧЕНИЯ (% (0) s,% (1) s,% (2) s,% (3) s,% (4) s, % (5) s) \ nПимонговая ошибка: {\ 'index \': 0, \ 'code \': 11000, \ 'errmsg \': E11000 Коллекция дубликатов ошибок ключа: f2fretaildev.brand index: дублирующий ключ name_1: {: \ "shyamalas \"} \ '} \ nВерсия: 1.2.26 "

Это ошибка дублирующего ключа при добавлении данных с помощью djongo (django mongodb orm)

Есть ли способ получить ошибку pymongo внутри него как json? Я пробовал json.dumps и json.loads, которые не работали

1 Ответ

0 голосов
/ 14 мая 2018

Проблема в том, что сообщения об ошибках не формируются должным образом в формате JSON. Я должен был сделать некоторые условия; Приведенный ниже код просто для того, чтобы дать вам подход. Это довольно хрупко в том смысле, что если сообщение об ошибке изменяется, оно может дать сбой - вам придется иметь дело с крайними случаями.

import json


error_msg = """
    FAILED SQL: INSERT INTO \"brand\" (\"brand_id\", \"name\", \"notification_email\", \"notification_phone\", \"created_at\",
     \"updated_at\") VALUES (%(0)s, %(1)s, %(2)s, %(3)s, %(4)s, %(5)s)\nPymongo error: {\'index\': 0, \'code\': 11000, 
     \'errmsg\': \'E11000 duplicate key error collection: f2fretaildev.brand index: name_1 dup key: 
     { : \"shyamalas\" }\'}\nVersion: 1.2.26"
"""

key = "Unknown"
try:
    mongo_msg = error_msg.split('Pymongo error:')[1].split('Version:')[0].replace('\n','').replace('"','##')\
        .replace("'", '"').replace("{ :", " ").replace("## }", "##").replace('##', '')
    as_dict = json.loads(mongo_msg)
    error_msg = as_dict['errmsg']
    value = error_msg.split('key:')[1].strip()
    print(error_msg)
    print(value)
except:
    # Log it, print it, try something different
    pass
...