summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2020-05-22 13:14:58 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2020-05-22 13:15:30 -0400
commit29534cf13939c7f7fe59399f12d50df2fcab7a38 (patch)
treec7d5d25debc125007288ac8bd707dc215da862dc
parent1d320fa48020407c997cb605c90b85e1ce15a89a (diff)
downloadsqlalchemy-29534cf13939c7f7fe59399f12d50df2fcab7a38.tar.gz
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
-rw-r--r--doc/build/changelog/unreleased_13/5346.rst9
-rw-r--r--lib/sqlalchemy/connectors/pyodbc.py3
-rw-r--r--test/dialect/mssql/test_engine.py7
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")