Как определить тип ошибки при работе с PostgreSQL?
осваиваю PostgreSQL, интересует такой вопрос:
Есть таблица с уникальными значениями, при попытке добавить в неё уже существующее само-собой возникает ошибка. Хотелось бы обработать исключение, указав тип ошибки, но не понимаю как его определить. Сейчас код выглядит так:
try:
...
except Exception as error:
print(error, type(error))
...
В консоль выводится:
duplicate key value violates unique constraint "login"
DETAIL: Key (login)=(login1) already exists.
<class 'psycopg2.errors.UniqueViolation'>
Ответы (1 шт):
Автор решения: Eugene X
→ Ссылка
Обрати внимание что ошибка идет от определенного класса и принимай его как отдельный источник ошибки.
Так как UniqueViolation имеет приватный обзор то сравнивать его нужно через встроенный механизм psycopg2.
<class 'psycopg2.errors.UniqueViolation'>
from psycopg2.errorcodes import UNIQUE_VIOLATION
from psycopg2 import errors
try:
pass
except errors.lookup(UNIQUE_VIOLATION) as error:
print("Unique key violation")
except Exception as error:
print(error, type(error))
pass