summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2017-09-28 12:07:19 -0400
committerGerrit Code Review <gerrit@ci.zzzcomputing.com>2017-09-28 12:07:19 -0400
commit4a2760ffd227af7b5aead674e3c2f72b28617a12 (patch)
treecd6dc59cbbe040066455f8e0f5f75987faf7099b /lib
parent1ec7ba52e1c7e6d232223912f154e25252fb9b92 (diff)
parent6a38697261e271b3600d8f1bbc56f663e5ee9890 (diff)
downloadsqlalchemy-4a2760ffd227af7b5aead674e3c2f72b28617a12.tar.gz
Merge "Add full list of pyodbc error codes for MSSQL"
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/connectors/pyodbc.py2
-rw-r--r--lib/sqlalchemy/dialects/mssql/pyodbc.py10
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/sqlalchemy/connectors/pyodbc.py b/lib/sqlalchemy/connectors/pyodbc.py
index b95b2964f..3e1d1a330 100644
--- a/lib/sqlalchemy/connectors/pyodbc.py
+++ b/lib/sqlalchemy/connectors/pyodbc.py
@@ -111,8 +111,6 @@ class PyODBCConnector(Connector):
if isinstance(e, self.dbapi.ProgrammingError):
return "The cursor's connection has been closed." in str(e) or \
'Attempt to use a closed connection.' in str(e)
- elif isinstance(e, self.dbapi.Error):
- return '[08S01]' in str(e)
else:
return False
diff --git a/lib/sqlalchemy/dialects/mssql/pyodbc.py b/lib/sqlalchemy/dialects/mssql/pyodbc.py
index a667b671e..6fd4fc554 100644
--- a/lib/sqlalchemy/dialects/mssql/pyodbc.py
+++ b/lib/sqlalchemy/dialects/mssql/pyodbc.py
@@ -275,4 +275,14 @@ class MSDialect_pyodbc(PyODBCConnector, MSDialect):
version.append(n)
return tuple(version)
+ def is_disconnect(self, e, connection, cursor):
+ if isinstance(e, self.dbapi.Error):
+ for code in (
+ '08S01', '01002', '08003', '08007',
+ '08S02', '08001', 'HYT00', 'HY010'):
+ if code in str(e):
+ return True
+ return super(MSDialect_pyodbc, self).is_disconnect(
+ e, connection, cursor)
+
dialect = MSDialect_pyodbc