Как определить тип ошибки при работе с 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
→ Ссылка