diff options
-rw-r--r-- | doc/build/changelog/unreleased_13/5346.rst | 9 | ||||
-rw-r--r-- | lib/sqlalchemy/connectors/pyodbc.py | 3 | ||||
-rw-r--r-- | test/dialect/mssql/test_engine.py | 7 |
3 files changed, 18 insertions, 1 deletions
diff --git a/doc/build/changelog/unreleased_13/5346.rst b/doc/build/changelog/unreleased_13/5346.rst new file mode 100644 index 000000000..7b4e0fb4e --- /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 cd79a3ada..df1b2afdb 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 00babf8ce..0dea2688a 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") |