]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Temporary kludge to fix InterfaceError, in places where cursor.executedirect is neede...
authorBrad Allen <bradallen137@gmail.com>
Mon, 8 Mar 2010 21:57:18 +0000 (15:57 -0600)
committerBrad Allen <bradallen137@gmail.com>
Mon, 8 Mar 2010 21:57:18 +0000 (15:57 -0600)
lib/sqlalchemy/connectors/mxodbc.py

index 49c5a732937721769048640996895d11028093db..fd1a69ace395e5401a2002020c862087f8536358 100644 (file)
@@ -3,6 +3,7 @@ import sys
 import re
 
 from sqlalchemy.connectors import Connector
+from mx.ODBC import InterfaceError
 
 class MxODBCConnector(Connector):
     driver='mxodbc'
@@ -75,3 +76,17 @@ class MxODBCConnector(Connector):
             except ValueError:
                 version.append(n)
         return tuple(version)
+    
+    def do_execute(self, cursor, statement, parameters, context=None):
+        """ Override the default do_execute for all dialects using mxODBC.
+        
+        This is needed because mxODBC expects a sequence of sequences
+        (usually a tuple of tuples) for the bind parameters, and 
+        SQLAlchemy commonly sends a list containing a string,
+        which mxODBC interprets as a sequence and breaks out the 
+        individual characters.
+        """
+        try:
+            cursor.execute(statement, tuple(parameters))
+        except InterfaceError:
+            cursor.executedirect(statement, tuple(parameters))