summaryrefslogtreecommitdiff
path: root/test/dialect
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-09-03 10:30:51 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-09-03 10:31:29 -0400
commit4399431b53e5d132672431205c654d7d6b32dd77 (patch)
treee0d6baef528c1f6dae8331bf1e86fa7f84d90aa8 /test/dialect
parent613d8ca0f84d3e92b35403eaba21824e72b8ada8 (diff)
downloadsqlalchemy-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.py26
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]