'DatabaseError' is not being caught by mysql.connector.errors.DatabaseError python

Question:

I am using SQLAlchemy and mysql-connector. While executing a query, if I get mysql.connector.errors.DatabaseError I have used the exception provided by mysql.

The exception is going in the Exception block and not in the DatabaseError catch block.

Code

try:
    row_exists = None
    session_object = self.connect_to_database()
    # check if the value exists or not
    try:
        if session_object.query(
                exists().where(
                    ConnectorRequest.CR_Context_Key == input_context['Context_Key'])).scalar():
            row_exists = True
        else:
            row_exists = False
    except DatabaseError as mysql_error:
        logger.error('Error connecting to the MYSQL Server.Invalid database IP or Port provided' +
                     f'nError-{str(mysql_error)}', exc_info=True)
    # close the session_object
    session_object.close()
    return row_exists
except Exception as error:
    logger.error('Error in exists query of the database' +
                 f'nException - {str(error)}', exc_info=True)
  • Error caught in Exception
(mysql.connector.errors.DatabaseError) 2003 (HY000): Can't connect to MySQL server on '10.10.1.00:3306' (101)
(Background on this error at: https://sqlalche.me/e/14/4xp6)
  • Stacktrace
{"asctime": "2023-02-01 13:53:45,195", "levelname": "ERROR", "module": "Helper", "funcName": "check_if_file_is_already_processed", "process": 22216, 
"message": "Error in exists query of the databasenException - (mysql.connector.errors.DatabaseError) 2003 (HY000): Can't connect to MySQL server on '10.10.1.00:3306' (101)n(Background on this error at: https://sqlalche.me/e/14/4xp6)", 
"exc_info": "Traceback (most recent call last):n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/mysql/connector/connection_cext.py", line 232, in _open_connectionn    self._cmysql.connect(**cnx_kwargs)n_mysql_connector.MySQLInterfaceError: Can't connect to MySQL server on '10.10.1.00:3306' (101)nnDuring handling of the above exception, another exception occurred:nnTraceback (most recent call last):n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 3361, in _wrap_pool_connectn    return fn()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 327, in connectn    return _ConnectionFairy._checkout(self)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 894, in _checkoutn    fairy = _ConnectionRecord.checkout(pool)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 493, in checkoutn    rec = pool._do_get()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/impl.py", line 146, in _do_getn    self._dec_overflow()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 72, in __exit__n    with_traceback=exc_tb,n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 211, in raise_n    raise exceptionn  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/impl.py", line 143, in _do_getn    return self._create_connection()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 273, in _create_connectionn    return _ConnectionRecord(self)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 388, in __init__n    self.__connect()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 691, in __connectn    pool.logger.debug("Error on connect(): %s", e)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 72, in __exit__n    with_traceback=exc_tb,n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 211, in raise_n    raise exceptionn  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 686, in __connectn    self.dbapi_connection = connection = pool._invoke_creator(self)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/create.py", line 578, in connectn    return dialect.connect(*cargs, **cparams)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 598, in connectn    return self.dbapi.connect(*cargs, **cparams)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/mysql/connector/__init__.py", line 272, in connectn    return CMySQLConnection(*args, **kwargs)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/mysql/connector/connection_cext.py", line 85, in __init__n    self.connect(**kwargs)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/mysql/connector/abstracts.py", line 1003, in connectn    self._open_connection()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/mysql/connector/connection_cext.py", line 235, in _open_connectionn    sqlstate=exc.sqlstate)nmysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on '10.10.1.00:3306' (101)nnThe above exception was the direct cause of the following exception:nnTraceback (most recent call last):n  File "/home/usr/Workarea-2/usr/pycharm_project/toyota_finance_service/python_module/folder_listener_connector/folder_listener_connector/Helper.py", line 155, in check_if_file_is_already_processedn    ConnectorRequest.CR_Context_Key == input_context['Connector_Context_Key'])).scalar():n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2893, in scalarn    ret = self.one()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2870, in onen    return self._iter().one()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2919, in _itern    execution_options={"_sa_orm_load_options": self.load_options},n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 1713, in executen    conn = self._connection_for_bind(bind)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 1553, in _connection_for_bindn    engine, execution_optionsn  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bindn    conn = bind.connect()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 3315, in connectn    return self._connection_cls(self, close_with_result=close_with_result)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 96, in __init__n    else engine.raw_connection()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 3394, in raw_connectionn    return self._wrap_pool_connect(self.pool.connect, _connection)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 3365, in _wrap_pool_connectn    e, dialect, selfn  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2199, in _handle_dbapi_exception_noconnectionn    sqlalchemy_exception, with_traceback=exc_info[2], from_=en  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 211, in raise_n    raise exceptionn  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 3361, in _wrap_pool_connectn    return fn()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 327, in connectn    return _ConnectionFairy._checkout(self)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 894, in _checkoutn    fairy = _ConnectionRecord.checkout(pool)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 493, in checkoutn    rec = pool._do_get()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/impl.py", line 146, in _do_getn    self._dec_overflow()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 72, in __exit__n    with_traceback=exc_tb,n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 211, in raise_n    raise exceptionn  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/impl.py", line 143, in _do_getn    return self._create_connection()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 273, in _create_connectionn    return _ConnectionRecord(self)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 388, in __init__n    self.__connect()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 691, in __connectn    pool.logger.debug("Error on connect(): %s", e)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 72, in __exit__n    with_traceback=exc_tb,n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 211, in raise_n    raise exceptionn  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 686, in __connectn    self.dbapi_connection = connection = pool._invoke_creator(self)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/create.py", line 578, in connectn    return dialect.connect(*cargs, **cparams)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 598, in connectn    return self.dbapi.connect(*cargs, **cparams)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/mysql/connector/__init__.py", line 272, in connectn    return CMySQLConnection(*args, **kwargs)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/mysql/connector/connection_cext.py", line 85, in __init__n    self.connect(**kwargs)n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/mysql/connector/abstracts.py", line 1003, in connectn    self._open_connection()n  File "/home/usr/Workarea-2/usr/python_proj_env/folder_listener_connector_venv/lib/python3.6/site-packages/mysql/connector/connection_cext.py", line 235, in _open_connectionn    sqlstate=exc.sqlstate)nsqlalchemy.exc.DatabaseError: (mysql.connector.errors.DatabaseError) 2003 (HY000): Can't connect to MySQL server on '10.10.1.00:3306' (101)n(Background on this error at: https://sqlalche.me/e/14/4xp6)"}
Asked By: donny

||

Answers:

The exception is sqlalchemy.exc.DatabaseError; SQLAlchemy wraps the error from the DB-API connector (here MySQL-Connector) but displays the details from it.

So you need to do

from sqlalchemy.exc import DatabaseError

...

try:
    # something
except DatabaseError:
    # handle exception
Answered By: snakecharmerb