Исключение OperationalError
Исключение OperationalError представляет собой
подкласс исключения DBAPIError. Оно
возникает, когда драйвер базы данных сообщает
об ошибке, которая не является ошибкой
программирования или целостности данных.
Примерами могут служить невозможность
подключения к серверу, внезапный разрыв
соединения, блокировка таблицы или
исчерпание дискового пространства.
Данное исключение обычно не связано с
неправильным синтаксисом SQL-запроса.
Синтаксис
from sqlalchemy.exc import OperationalError
try:
# database operation
pass
except OperationalError as e:
# handle error
pass
Пример
Давайте попробуем подключиться к несуществующему
файлу базы данных SQLite, чтобы вызвать
исключение OperationalError:
from sqlalchemy import create_engine
from sqlalchemy.exc import OperationalError
engine = create_engine('sqlite:///nonexistent_folder/test.db')
try:
with engine.connect() as conn:
pass
except OperationalError as e:
print(f"OperationalError caught: {e.orig}")
Результат выполнения кода:
"OperationalError caught: unable to open database file"
Пример
Рассмотрим ситуацию, когда выполняется запрос
к несуществующей таблице. Это также может
привести к исключению OperationalError,
если СУБД сообщает об ошибке на уровне
операций, а не компиляции:
from sqlalchemy import create_engine, text
from sqlalchemy.exc import OperationalError
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
try:
conn.execute(text("SELECT * FROM missing_table"))
except OperationalError as e:
print(f"OperationalError: {e.orig}")
Результат выполнения кода:
"OperationalError: no such table: missing_table"
Смотрите также
-
класс
SQLAlchemyError,
который является базовым для всех исключений -
класс
DBAPIError,
который оборачивает ошибки драйвера базы данных -
класс
InterfaceError,
который сигнализирует об ошибках интерфейса -
класс
TimeoutError,
который возникает при превышении времени ожидания