РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
681 of 711 menu

Исключение DBAPIError

Исключение DBAPIError возбуждается, когда драйвер базы данных (DBAPI) сообщает об ошибке во время выполнения запроса. Это базовое исключение для ошибок соединения, синтаксиса SQL, нарушения прав доступа и других проблем, пришедших непосредственно от СУБД. Атрибут orig хранит исходное исключение драйвера, statement содержит текст выполненного запроса, а params - переданные параметры.

Синтаксис

from sqlalchemy.exc import DBAPIError try: # выполнение запроса pass except DBAPIError as e: print(e)

Пример

Давайте попробуем выполнить запрос к несуществующей таблице и поймаем исключение DBAPIError:

from sqlalchemy import create_engine, text from sqlalchemy.exc import DBAPIError engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: try: conn.execute(text('SELECT * FROM unknown_table')) except DBAPIError as e: print(type(e).__name__) print(e.orig)

Результат выполнения кода:

"DBAPIError" "no such table: unknown_table"

Пример

Давайте выведем атрибут statement, чтобы увидеть SQL-запрос, вызвавший ошибку:

from sqlalchemy import create_engine, text from sqlalchemy.exc import DBAPIError engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: try: conn.execute(text('SELECT * FROM unknown_table')) except DBAPIError as e: print(e.statement)

Результат выполнения кода:

"SELECT * FROM unknown_table"

Пример

Давайте создадим таблицу articles и попробуем вставить дублирующее значение первичного ключа, чтобы получить ошибку целостности, наследуемую от DBAPIError:

from sqlalchemy import create_engine, text from sqlalchemy.exc import DBAPIError engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text( 'CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT)' )) conn.execute(text("INSERT INTO articles VALUES (1, 'article')")) conn.commit() try: conn.execute(text("INSERT INTO articles VALUES (1, 'article')")) except DBAPIError as e: print(type(e).__name__) print(isinstance(e, DBAPIError))

Результат выполнения кода:

"IntegrityError" "True"

Смотрите также

  • исключение SQLAlchemyError,
    которое является базовым для всех исключений библиотеки
  • исключение IntegrityError,
    которое возникает при нарушении целостности данных
  • исключение OperationalError,
    которое сигнализирует о проблемах работы самой СУБД
  • исключение ProgrammingError,
    которое возникает при ошибках в SQL-коде
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить