Исключение DisconnectionError
Исключение DisconnectionError вызывается,
когда пул соединений обнаруживает,
что соединение с базой данных было разорвано.
Это может произойти из-за сетевого сбоя,
перезагрузки сервера базы данных,
превышения тайм-аута или других причин.
Исключение наследуется от SQLAlchemyError
и обычно обрабатывается механизмом пула
для пересоздания соединения.
Синтаксис
from sqlalchemy.exc import DisconnectionError
raise DisconnectionError(statement=None, params=None, orig=None)
Пример
Давайте импортируем исключение и проверим его наследование:
from sqlalchemy.exc import DisconnectionError, SQLAlchemyError
print(issubclass(DisconnectionError, SQLAlchemyError))
Результат выполнения кода:
True
Пример
Давайте создадим исключение вручную и посмотрим его строковое представление:
from sqlalchemy.exc import DisconnectionError
exc = DisconnectionError(statement='SELECT 1', params=None, orig=Exception('connection lost'))
print(exc)
Результат выполнения кода:
"(builtins.Exception) connection lost\n[SQL: SELECT 1]"
Пример
Давайте перехватим исключение при выполнении запроса к базе данных:
from sqlalchemy import create_engine, text
from sqlalchemy.exc import DisconnectionError
engine = create_engine('sqlite:///:memory:')
try:
with engine.connect() as conn:
conn.execute(text('SELECT 1'))
except DisconnectionError as exc:
print('connection lost:', exc)
else:
print('connection is fine')
Результат выполнения кода:
"connection is fine"
Пример
Давайте посмотрим,
как DisconnectionError связан
с другими исключениями SQLAlchemy:
Результат выполнения кода:
False
True
(<class 'sqlalchemy.exc.DisconnectionError'>, <class 'sqlalchemy.exc.SQLAlchemyError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>)
Смотрите также
-
исключение
SQLAlchemyError,
которое является базовым для всех ошибок SQLAlchemy -
исключение
DBAPIError,
которое оборачивает ошибки драйвера базы данных -
исключение
OperationalError,
которое сигнализирует о проблемах работы СУБД -
исключение
InterfaceError,
которое возникает при ошибках интерфейса драйвера