summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/dialects/mssql/pymssql.py3
-rw-r--r--test/dialect/test_mssql.py6
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/pymssql.py b/lib/sqlalchemy/dialects/mssql/pymssql.py
index 6f6d3b01f..0754f7f76 100644
--- a/lib/sqlalchemy/dialects/mssql/pymssql.py
+++ b/lib/sqlalchemy/dialects/mssql/pymssql.py
@@ -85,6 +85,9 @@ class MSDialect_pymssql(MSDialect):
def is_disconnect(self, e, connection, cursor):
for msg in (
+ "Error 20003", # Connection Timeout
+ "Error 20004", # Read from SQL server failed
+ "Error 20006", # Write to SQL Server failed
"Error 10054",
"Not connected to any MS SQL server",
"Connection is closed"
diff --git a/test/dialect/test_mssql.py b/test/dialect/test_mssql.py
index 06f3d2805..b38d76372 100644
--- a/test/dialect/test_mssql.py
+++ b/test/dialect/test_mssql.py
@@ -1320,6 +1320,12 @@ class ParseConnectTest(fixtures.TestBase, AssertsCompiledSQL):
'user': 'scott', 'database': 'test'}], connection
)
+ def test_pymssql_disconnect(self):
+ dialect = pymssql.dialect()
+
+ for error in ['20003', '20003', '20006']:
+ eq_(dialect.is_disconnect('Error %s' % error, None, None), True)
+
@testing.only_on(['mssql+pyodbc', 'mssql+pymssql'], "FreeTDS specific test")
def test_bad_freetds_warning(self):
engine = engines.testing_engine()