@Gambetto

Как в Django поймать исключение, которое фреймворк подменяет своим?

Мне нужно поймать исключение psycopg2.errors.UndefinedColumn, которое возникает при попытке выполнить запрос:
from django.db import connection

with connection.cursor() as cursor:
    try:
        cursor.execute(query, params)
    except UndefinedColumn:
        ...

Но его обрабатывает Django, и возвращает уже django.db.utils.ProgrammingError.
psycopg2.errors.UndefinedColumn: column "col" does not exist
The above exception was the direct cause of the following exception:
django.db.utils.ProgrammingError: column "col" does not exist

Есть ли способ добраться до исходного исключения от psycopg2?
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
@bacon
The Django wrappers for database exceptions behave exactly the same as the underlying database exceptions. See PEP 249, the Python Database API Specification v2.0, for further information.

As per PEP 3134, a __cause__ attribute is set with the original (underlying) database exception, allowing access to any additional information provided.
https://docs.djangoproject.com/en/3.1/ref/exceptio...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы