Note that reflection of indexes requires SQL
Server 2005 or greater. [ticket:1770]
+ - mssql+pymssql dialect now honors the "port" portion
+ of the URL instead of discarding it. [ticket:1952]
+
- informix
- *Major* cleanup / modernization of the Informix
dialect for 0.6, courtesy Florian Apolloner.
def create_connect_args(self, url):
opts = url.translate_connect_args(username='user')
opts.update(url.query)
- opts.pop('port', None)
+ port = opts.pop('port', None)
+ if port and 'host' in opts:
+ opts['host'] = "%s:%s" % (opts['host'], port)
return [[], opts]
def is_disconnect(self, e):
else:
return False
-dialect = MSDialect_pymssql
\ No newline at end of file
+dialect = MSDialect_pymssql
from sqlalchemy.orm import *
from sqlalchemy.sql import table, column
from sqlalchemy.databases import mssql
-from sqlalchemy.dialects.mssql import pyodbc, mxodbc
+from sqlalchemy.dialects.mssql import pyodbc, mxodbc, pymssql
from sqlalchemy.engine import url
from sqlalchemy.test import *
from sqlalchemy.test.testing import eq_, emits_warning_on, \
class ParseConnectTest(TestBase, AssertsCompiledSQL):
- __only_on__ = 'mssql'
-
@classmethod
def setup_class(cls):
global dialect
- dialect = pyodbc.MSDialect_pyodbc()
+ dialect = pyodbc.dialect()
def test_pyodbc_connect_dsn_trusted(self):
u = url.make_url('mssql://mydsn')
connection = dialect.create_connect_args(u)
eq_([['DRIVER={SQL Server};Server=hostspec;Database=database;UI'
'D=username;PWD=password'], {}], connection)
+
+ def test_pymssql_port_setting(self):
+ dialect = pymssql.dialect()
+ u = \
+ url.make_url('mssql+pymssql://scott:tiger@somehost/test')
+ connection = dialect.create_connect_args(u)
+ eq_(
+ [[], {'host': 'somehost', 'password': 'tiger',
+ 'user': 'scott', 'database': 'test'}], connection
+ )
+
+ u = \
+ url.make_url('mssql+pymssql://scott:tiger@somehost:5000/test')
+ connection = dialect.create_connect_args(u)
+ eq_(
+ [[], {'host': 'somehost:5000', 'password': 'tiger',
+ 'user': 'scott', 'database': 'test'}], connection
+ )
+
+ @testing.only_on(['mssql+pyodbc', 'mssql+pymssql'], "FreeTDS specific test")
def test_bad_freetds_warning(self):
engine = engines.testing_engine()