From: Mike Bayer Date: Fri, 22 May 2020 17:14:58 +0000 (-0400) Subject: Don't emit pyodbc "no driver" warning for empty URL X-Git-Tag: rel_1_4_0b1~316^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=29534cf13939c7f7fe59399f12d50df2fcab7a38;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Don't emit pyodbc "no driver" warning for empty URL Fixed an issue in the pyodbc connector such that a warning about pyodbc "drivername" would be emitted when using a totally empty URL. Empty URLs are normal when producing a non-connected dialect object or when using the "creator" argument to create_engine(). The warning now only emits if the driver name is missing but other parameters are still present. Fixes: #5346 Change-Id: I0ee6f5fd5af7faca63bf0d7034410942f40834a8 --- diff --git a/doc/build/changelog/unreleased_13/5346.rst b/doc/build/changelog/unreleased_13/5346.rst new file mode 100644 index 0000000000..7b4e0fb4e6 --- /dev/null +++ b/doc/build/changelog/unreleased_13/5346.rst @@ -0,0 +1,9 @@ +.. change:: + :tags: bug, mssql, pyodbc + :tickets: 5346 + + Fixed an issue in the pyodbc connector such that a warning about pyodbc + "drivername" would be emitted when using a totally empty URL. Empty URLs + are normal when producing a non-connected dialect object or when using the + "creator" argument to create_engine(). The warning now only emits if the + driver name is missing but other parameters are still present. diff --git a/lib/sqlalchemy/connectors/pyodbc.py b/lib/sqlalchemy/connectors/pyodbc.py index cd79a3ada0..df1b2afdbb 100644 --- a/lib/sqlalchemy/connectors/pyodbc.py +++ b/lib/sqlalchemy/connectors/pyodbc.py @@ -75,7 +75,8 @@ class PyODBCConnector(Connector): connectors = [] driver = keys.pop("driver", self.pyodbc_driver_name) - if driver is None: + if driver is None and keys: + # note if keys is empty, this is a totally blank URL util.warn( "No driver name specified; " "this is expected by PyODBC when using " diff --git a/test/dialect/mssql/test_engine.py b/test/dialect/mssql/test_engine.py index 00babf8ce7..0dea2688a7 100644 --- a/test/dialect/mssql/test_engine.py +++ b/test/dialect/mssql/test_engine.py @@ -66,6 +66,13 @@ class ParseConnectTest(fixtures.TestBase): connection, ) + def test_pyodbc_empty_url_no_warning(self): + dialect = pyodbc.dialect() + u = url.make_url("mssql+pyodbc://") + + # no warning is emitted + dialect.create_connect_args(u) + def test_pyodbc_host_no_driver(self): dialect = pyodbc.dialect() u = url.make_url("mssql://username:password@hostspec/database")