nice to set pyodbc ansi, unicode_results connect_args as URL parameters

Issue #1621 resolved
Former user created an issue

See http://code.google.com/p/pyodbc/wiki/Module

+    def create_connect_args(self, url): 
+        """Support pyodbc's ansi and unicode_results parameters"""
+        connect_args = {}
+        for param in ('ansi', 'unicode_results'):
+            try:
+                value = asbool(url.query.pop(param))
+                connect_args[param](param) = value
+            except KeyError:
+                pass
+        args = PyODBCConnector.create_connect_args(self, url)
+        args[1](1).update(connect_args)
+        return args
+

Comments (5)

  1. Mike Bayer repo owner

    why don't you patch sqlalchemy/connectors/pyodbc.py directly - don't know what file that is above

  2. Former user Account Deleted

    This should make more sense.

    There is also an 'autocommit' argument that is passed the same way. I don't need it. Is it useful for SQLAlchemy?

    Index: pyodbc.py
    ===================================================================
    --- pyodbc.py   (revision 6511)
    +++ pyodbc.py   (working copy)
    @@ -1,4 +1,5 @@
     from sqlalchemy.connectors import Connector
    +from sqlalchemy.util import asbool
    
     import sys
     import re
    @@ -28,6 +29,11 @@
             keys = opts
             query = url.query
    
    +        connect_args = {}
    +        for param in ('ansi', 'unicode_results'): # or ('ansi', 'autocommit', 'unicode_results'):
    +            if param in keys:
    +                connect_args[param](param) = asbool(keys.pop(param))
    +
             if 'odbc_connect' in keys:
                 connectors = [urllib.unquote_plus(keys.pop('odbc_connect'))](urllib.unquote_plus(keys.pop('odbc_connect')))
             else:
    @@ -58,7 +64,7 @@
                     connectors.append("AutoTranslate=%s" % keys.pop("odbc_autotranslate"))
    
                 connectors.extend([% (k,v) for k,v in keys.iteritems()]('%s=%s'))
    -        return [(connectors)]([";".join), {}]
    +        return [(connectors)]([";".join), connect_args]
    
         def is_disconnect(self, e):
             if isinstance(e, self.dbapi.ProgrammingError):
    
  3. Mike Bayer repo owner
    • changed milestone to 0.6.0

    we dont need "autocommit" as of yet. we haven't started supporting native autocommit modes yet (not sure if we want to).

  4. Log in to comment