summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2020-05-22 20:12:42 +0000
committerGerrit Code Review <gerrit@bbpush.zzzcomputing.com>2020-05-22 20:12:42 +0000
commit16fcbd3be2fc702bc022ff848b6e0f400d60f2f6 (patch)
treeabe666862c1125132a2701f99c3cbf101a66d5a8
parent88ae6a6cdd9f37d65ea212736f1229bb62d677a9 (diff)
parent29534cf13939c7f7fe59399f12d50df2fcab7a38 (diff)
downloadsqlalchemy-16fcbd3be2fc702bc022ff848b6e0f400d60f2f6.tar.gz
Merge "Don't emit pyodbc "no driver" warning for empty URL"
-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")