From ddff320473dcbd3cc11d577715f96237276bc685 Mon Sep 17 00:00:00 2001 From: Gord Thompson Date: Fri, 29 May 2020 07:20:54 -0600 Subject: Fix is_disconnect false positive for mssql+pyodbc Fixed an issue where the ``is_disconnect`` function in the SQL Server pyodbc dialect was incorrectly reporting the disconnect state when the exception messsage had a substring that matched a SQL Server ODBC error code. Fixes: #5359 Change-Id: I450c6818405a20f4daee20d58fce2d5ecb33e17f --- lib/sqlalchemy/dialects/mssql/pyodbc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/sqlalchemy/dialects') diff --git a/lib/sqlalchemy/dialects/mssql/pyodbc.py b/lib/sqlalchemy/dialects/mssql/pyodbc.py index ff164e886..6cf45e7b8 100644 --- a/lib/sqlalchemy/dialects/mssql/pyodbc.py +++ b/lib/sqlalchemy/dialects/mssql/pyodbc.py @@ -419,7 +419,8 @@ class MSDialect_pyodbc(PyODBCConnector, MSDialect): def is_disconnect(self, e, connection, cursor): if isinstance(e, self.dbapi.Error): - for code in ( + code = e.args[0] + if code in ( "08S01", "01002", "08003", @@ -430,8 +431,7 @@ class MSDialect_pyodbc(PyODBCConnector, MSDialect): "HY010", "10054", ): - if code in str(e): - return True + return True return super(MSDialect_pyodbc, self).is_disconnect( e, connection, cursor ) -- cgit v1.2.1