From: Mike Bayer Date: Fri, 18 Dec 2009 18:55:14 +0000 (+0000) Subject: - All pyodbc-dialects now support extra pyodbc-specific X-Git-Tag: rel_0_6beta1~126 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7f7a908d20bbd91882de8e43d3e66d836e27958a;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - All pyodbc-dialects now support extra pyodbc-specific kw arguments 'ansi', 'unicode_results', 'autocommit'. [ticket:1621] --- diff --git a/CHANGES b/CHANGES index 7b5a25031c..bebcf8043d 100644 --- a/CHANGES +++ b/CHANGES @@ -308,6 +308,10 @@ CHANGES as invalidated connections, DEBUG for all the acquire/return logging. `echo_pool` can be False, None, True or "debug" the same way as `echo` works. + + - All pyodbc-dialects now support extra pyodbc-specific + kw arguments 'ansi', 'unicode_results', 'autocommit'. + [ticket:1621] - deprecated or removed * result.last_inserted_ids() is deprecated. Use diff --git a/lib/sqlalchemy/connectors/pyodbc.py b/lib/sqlalchemy/connectors/pyodbc.py index ebe28c6829..30a7f98d02 100644 --- a/lib/sqlalchemy/connectors/pyodbc.py +++ b/lib/sqlalchemy/connectors/pyodbc.py @@ -1,4 +1,5 @@ from sqlalchemy.connectors import Connector +from sqlalchemy.util import asbool import sys import re @@ -28,6 +29,11 @@ class PyODBCConnector(Connector): keys = opts query = url.query + connect_args = {} + for param in ('ansi', 'unicode_results', 'autocommit'): + if param in keys: + connect_args[param] = asbool(keys.pop(param)) + if 'odbc_connect' in keys: connectors = [urllib.unquote_plus(keys.pop('odbc_connect'))] else: @@ -58,8 +64,8 @@ class PyODBCConnector(Connector): connectors.append("AutoTranslate=%s" % keys.pop("odbc_autotranslate")) connectors.extend(['%s=%s' % (k,v) for k,v in keys.iteritems()]) - return [[";".join (connectors)], {}] - + return [[";".join (connectors)], connect_args] + def is_disconnect(self, e): if isinstance(e, self.dbapi.ProgrammingError): return "The cursor's connection has been closed." in str(e) or 'Attempt to use a closed connection.' in str(e)