SQLAlchemy: event.handle_error никогда не вызывается

#mysql #python-3.x #error-handling #sqlalchemy #flask-sqlalchemy

#mysql #python-3.x #обработка ошибок #sqlalchemy #колба-sqlalchemy

Вопрос:

Мне нужно создать глобальный обработчик событий для SQLAlchemy ошибок catch «таблица не существует» или «база данных не существует». Я не хочу заранее проверять, существует ли таблица/база данных, потому что это дороже, чем поймать такую ошибку.

Я попытался использовать event обработчик ошибок SQLAlchemy ( handle_error ) для этого, но он не работает.

 class MultiTenantSQLAlchemy(SQLAlchemy): # type: ignore  def __init__(self, *args, **kwargs):  super().__init__(*args, **kwargs)  event.listens_for(self.engine, 'handle_error', self.receive_handle_error)   def receive_handle_error(self, exception_context):  print("listen for the 'handle_error' event")  print(exception_context)  db = MultiTenantSQLAlchemy(flask_app) db.session.execute('SELECT * FROM `table_that_does_not_exist`').fetchone()  

Это приводит к ошибке:

(MySQLdb._экскрипции.Ошибка программирования) (1146, «Таблица ‘my_db.table_that_does_not_exit’ не существует»)

но обработчик ошибок никогда не запускается.

Я был бы признателен за помощь!

Комментарии:

1. Обратите внимание, что SQLAlchemy класс здесь относится к проекту flask-sqlalchemy, а не к общему решению SQLAlchemy.