Обработка ошибок SQLAlchemy -как это делается?

Я хочу обработать случай, когда возникает конфликт первичного ключа или уникального ключа, также известный как дублирующаяся запись. Для этого я ловлю IntegrityError, который отлично ловит ошибку. Проблема в том, что я не могу найти какое-либо простое сообщение об ошибке или код ошибки для проверки. Все, что я получаю, это свойство IntegrityError.message, которое представляет собой строку, которая выглядит так:

(IntegrityError) (1062, "Duplicate entry 'foobar' for key 'name'")

Это не очень полезно. Используя это, мне придется начать разбор сообщений об ошибках для их кода и сообщения. Вызов dirдля исключения показывает только следующие свойства:

'args', 'connection_invalidated', 'instance', 'message', 'orig', 'params', 'statement'

args— это просто один кортеж элементов -с вышеупомянутой строкой внутри него, а params— это данные, которые я пытался вставить. Кажется, я не могу найти никакого способа определить, что это на самом деле ошибка с повторяющимся ключом, без необходимости начинать синтаксический анализ сообщения об ошибке с использованием регулярного выражения или чего-то еще.

Кто-нибудь может пролить свет на этот вопрос?

18
задан Nathaniel Jones 11 April 2019 в 19:56
поделиться