From 8e4864f2d5f626b740c1e8372f19f576967aeb1a Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Tue, 23 Nov 2021 13:02:46 +0100 Subject: [PATCH] OracleDB: add exit_on_error parameter to connect method --- mylib/oracle.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/mylib/oracle.py b/mylib/oracle.py index edeac24..186c282 100644 --- a/mylib/oracle.py +++ b/mylib/oracle.py @@ -23,6 +23,18 @@ class OracleDBException(Exception): super().__init__(error.format(*args, **kwargs)) +class OracleDBFailToConnect(OracleDBException, RuntimeError): + """ + Raised on connecting error occurred + """ + + def __init__(self, dsn, user): + super().__init__( + "An error occured during Oracle database connection ({user}@{dsn})", + user=user, dsn=dsn + ) + + class OracleDBDuplicatedSQLParameter(OracleDBException, KeyError): """ Raised when trying to set a SQL query parameter @@ -72,7 +84,7 @@ class OracleDB: self._conn = None self.just_try = just_try - def connect(self): + def connect(self, exit_on_error=True): """ Connect to Oracle server """ if self._conn is None: log.info('Connect on Oracle server with DSN %s as %s', self._dsn, self._user) @@ -82,12 +94,15 @@ class OracleDB: password=self._pwd, dsn=self._dsn ) - except Exception: + except Exception as err: log.fatal( 'An error occured during Oracle database connection (%s@%s).', self._user, self._dsn, exc_info=1 ) - sys.exit(1) + if exit_on_error: + sys.exit(1) + else: + raise OracleDBFailToConnect(self._dsn, self._user) from err return True def close(self):