diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-09-03 10:30:51 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-09-03 10:31:29 -0400 |
| commit | 4399431b53e5d132672431205c654d7d6b32dd77 (patch) | |
| tree | e0d6baef528c1f6dae8331bf1e86fa7f84d90aa8 /test/dialect | |
| parent | 613d8ca0f84d3e92b35403eaba21824e72b8ada8 (diff) | |
| download | sqlalchemy-4399431b53e5d132672431205c654d7d6b32dd77.tar.gz | |
- The hostname-based connection format for SQL Server when using
pyodbc will no longer specify a default "driver name", and a warning
is emitted if this is missing. The optimal driver name for SQL Server
changes frequently and is per-platform, so hostname based connections
need to specify this. DSN-based connections are preferred.
fixes #3182
Diffstat (limited to 'test/dialect')
| -rw-r--r-- | test/dialect/mssql/test_engine.py | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/test/dialect/mssql/test_engine.py b/test/dialect/mssql/test_engine.py index c07f30040..8ac9c6c16 100644 --- a/test/dialect/mssql/test_engine.py +++ b/test/dialect/mssql/test_engine.py @@ -6,7 +6,7 @@ from sqlalchemy.dialects.mssql import pyodbc, pymssql from sqlalchemy.engine import url from sqlalchemy.testing import fixtures from sqlalchemy import testing -from sqlalchemy.testing import assert_raises_message +from sqlalchemy.testing import assert_raises_message, assert_warnings class ParseConnectTest(fixtures.TestBase): @@ -38,18 +38,32 @@ class ParseConnectTest(fixtures.TestBase): assert ";LANGUAGE=us_english" in dsn_string assert ";foo=bar" in dsn_string - def test_pyodbc_connect(self): + def test_pyodbc_hostname(self): dialect = pyodbc.dialect() - u = url.make_url('mssql://username:password@hostspec/database') + u = url.make_url('mssql://username:password@hostspec/database?driver=SQL+Server') connection = dialect.create_connect_args(u) eq_([['DRIVER={SQL Server};Server=hostspec;Database=database;UI' 'D=username;PWD=password'], {}], connection) + def test_pyodbc_host_no_driver(self): + dialect = pyodbc.dialect() + u = url.make_url('mssql://username:password@hostspec/database') + + def go(): + return dialect.create_connect_args(u) + connection = assert_warnings( + go, + ["No driver name specified; this is expected by " + "PyODBC when using DSN-less connections"]) + + eq_([['Server=hostspec;Database=database;UI' + 'D=username;PWD=password'], {}], connection) + def test_pyodbc_connect_comma_port(self): dialect = pyodbc.dialect() u = \ url.make_url('mssql://username:password@hostspec:12345/data' - 'base') + 'base?driver=SQL Server') connection = dialect.create_connect_args(u) eq_([['DRIVER={SQL Server};Server=hostspec,12345;Database=datab' 'ase;UID=username;PWD=password'], {}], connection) @@ -58,7 +72,7 @@ class ParseConnectTest(fixtures.TestBase): dialect = pyodbc.dialect() u = \ url.make_url('mssql://username:password@hostspec/database?p' - 'ort=12345') + 'ort=12345&driver=SQL+Server') connection = dialect.create_connect_args(u) eq_([['DRIVER={SQL Server};Server=hostspec;Database=database;UI' 'D=username;PWD=password;port=12345'], {}], connection) @@ -67,7 +81,7 @@ class ParseConnectTest(fixtures.TestBase): dialect = pyodbc.dialect() u = \ url.make_url('mssql://username:password@hostspec/database?L' - 'ANGUAGE=us_english&foo=bar') + 'ANGUAGE=us_english&foo=bar&driver=SQL+Server') connection = dialect.create_connect_args(u) eq_(connection[1], {}) eq_(connection[0][0] |
