From: Mike Bayer Date: Fri, 7 Oct 2016 13:16:22 +0000 (-0400) Subject: Catch DBAPIError instead of ProgrammingError for pyodbc fail X-Git-Tag: rel_1_0_16~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=804ff38b37ecfdb514a684fe160ccc3b1cd9e2fc;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Catch DBAPIError instead of ProgrammingError for pyodbc fail This is part of release 1.1.1 but the broken version was unreleased in 1.0.16. Change-Id: Ide9e916d02fbbef549aa2838d1402c2b091e701d Fixes: #3820 (cherry picked from commit ae9300cac0ec398f92d9e523273403126a709134) --- diff --git a/lib/sqlalchemy/dialects/mssql/pyodbc.py b/lib/sqlalchemy/dialects/mssql/pyodbc.py index 30db94e49d..5c6dd4cde2 100644 --- a/lib/sqlalchemy/dialects/mssql/pyodbc.py +++ b/lib/sqlalchemy/dialects/mssql/pyodbc.py @@ -273,9 +273,10 @@ class MSDialect_pyodbc(PyODBCConnector, MSDialect): def _get_server_version_info(self, connection): try: raw = connection.scalar("SELECT SERVERPROPERTY('ProductVersion')") - except exc.ProgrammingError: + except exc.DBAPIError: # SQL Server docs indicate this function isn't present prior to - # 2008 + # 2008; additionally, unknown combinations of pyodbc aren't + # able to run this query. return super(MSDialect_pyodbc, self).\ _get_server_version_info(connection) else: