From d80aca8c0a344be7c4a3c312728a46a88f558577 Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Fri, 17 Aug 2007 17:58:55 +0000 Subject: [PATCH] can now specify a DSN for PyODBC, ticket #724 --- CHANGES | 1 + lib/sqlalchemy/databases/mssql.py | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index 983cd1dc75..a5827782e8 100644 --- a/CHANGES +++ b/CHANGES @@ -20,6 +20,7 @@ - added support for BIGINT, MONEY, SMALLMONEY, UNIQUEIDENTIFIER and SQL_VARIANT [ticket:721] - index names are now quoted when dropping from reflected tables [ticket:684] + - can now specify a DSN for PyODBC, using a URI like mssql:///?dsn=bob - postgres - when reflecting tables from alternate schemas, the "default" placed upon the primary key, i.e. usually a sequence name, has the "schema" name diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index 72aef8f467..d64fe926a7 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -758,15 +758,19 @@ class MSSQLDialect_pyodbc(MSSQLDialect): def supports_unicode_statements(self): """indicate whether the DBAPI can receive SQL statements as Python unicode strings""" + # PyODBC unicode is broken on UCS-4 builds return sys.maxunicode == 65535 def make_connect_string(self, keys): - connectors = ["Driver={SQL Server}"] - if 'port' in keys: - connectors.append('Server=%s,%d' % (keys.get('host'), keys.get('port'))) + if 'dsn' in keys: + connectors = ['dsn=%s' % keys['dsn']] else: - connectors.append('Server=%s' % keys.get('host')) - connectors.append("Database=%s" % keys.get("database")) + connectors = ["Driver={SQL Server}"] + if 'port' in keys: + connectors.append('Server=%s,%d' % (keys.get('host'), keys.get('port'))) + else: + connectors.append('Server=%s' % keys.get('host')) + connectors.append("Database=%s" % keys.get("database")) user = keys.get("user") if user: connectors.append("UID=%s" % user) -- 2.47.2