From cb43db6bd1354191732bf503fac84cf3c261bcb5 Mon Sep 17 00:00:00 2001 From: John Anderson Date: Mon, 18 Mar 2013 14:49:28 -0700 Subject: [PATCH] Added disconnect checks for timeout, unable to read, and unable to write --- lib/sqlalchemy/dialects/mssql/pymssql.py | 3 +++ test/dialect/test_mssql.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/lib/sqlalchemy/dialects/mssql/pymssql.py b/lib/sqlalchemy/dialects/mssql/pymssql.py index 6f6d3b01fd..0754f7f764 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 06f3d2805e..b38d763723 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() -- 2.47.2