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

Исключение StatementError

Исключение StatementError возбуждается в тех случаях, когда SQLAlchemy не может корректно выполнить SQL-выражение или оператор. Оно обычно оборачивает исходную ошибку драйвера базы данных и содержит дополнительную информацию о самом выражении. Первым параметром передаётся текст сообщения об ошибке, вторым - исходное исключение, третьим - объект выражения, вызвавшего сбой.

Синтаксис

StatementError(message, original_exception=None, params=None)

Пример

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

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

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

"StatementError"

Пример

Исключение содержит исходную ошибку драйвера. Давайте выведем её атрибут orig:

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

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

"OperationalError"

Пример

Давайте выведем полный текст сообщения об ошибке:

from sqlalchemy import create_engine, text from sqlalchemy.exc import StatementError engine = create_engine('sqlite:///:memory:') try: with engine.connect() as conn: conn.execute(text('SELECT * FROM articles')) except StatementError as err: print(str(err).splitlines()[0])

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

"(sqlite3.OperationalError) no such table: articles"

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

  • класс SQLAlchemyError,
    который является базовым исключением SQLAlchemy
  • класс DBAPIError,
    который оборачивает ошибки драйвера базы данных
  • класс OperationalError,
    который возникает при ошибках работы с базой
  • класс ResourceClosedError,
    который возникает при работе с закрытым соединением
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить