summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/default.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/engine/default.py')
-rw-r--r--lib/sqlalchemy/engine/default.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py
index c188e155c..04b017f08 100644
--- a/lib/sqlalchemy/engine/default.py
+++ b/lib/sqlalchemy/engine/default.py
@@ -610,7 +610,23 @@ class DefaultDialect(Dialect):
finally:
cursor.close()
except self.loaded_dbapi.Error as err:
- if self.is_disconnect(err, dbapi_connection, cursor):
+ is_disconnect = self.is_disconnect(err, dbapi_connection, cursor)
+
+ if self._has_events:
+ try:
+ Connection._handle_dbapi_exception_noconnection(
+ err,
+ self,
+ is_disconnect=is_disconnect,
+ invalidate_pool_on_disconnect=False,
+ )
+ except exc.StatementError as new_err:
+ is_disconnect = new_err.connection_invalidated
+
+ # other exceptions modified by the event handler will be
+ # thrown
+
+ if is_disconnect:
return False
else:
raise