]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- slight tweak to raw execute() change to also support tuples,
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 3 Apr 2007 18:08:51 +0000 (18:08 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 3 Apr 2007 18:08:51 +0000 (18:08 +0000)
not just lists [ticket:523]

CHANGES
lib/sqlalchemy/engine/base.py
test/engine/execute.py

diff --git a/CHANGES b/CHANGES
index 083114e36b971950d9cad2bb46d1dd2df492e4fa..a4af707ee507f2caa533bc125a1981c5884fdbfa 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -39,6 +39,8 @@
       an argument of NULL
     - query strings in unicode URLs get keys encoded to ascii
       for **kwargs compat
+    - slight tweak to raw execute() change to also support tuples
+      for positional parameters, not just lists [ticket:523]
 - orm:
     - corresponding to label/bindparam name generataion, eager loaders 
       generate deterministic names for the aliases they create using 
index f5b4b377e4217c077812c8c723e6b93836dda311..6f0ff029a081acb0c6406c64f536ed01c8fd4d0e 100644 (file)
@@ -509,7 +509,7 @@ class Connection(Connectable):
     def execute_text(self, statement, *multiparams, **params):
         if len(multiparams) == 0:
             parameters = params
-        elif len(multiparams) == 1 and (isinstance(multiparams[0], list) or isinstance(multiparams[0], dict)):
+        elif len(multiparams) == 1 and (isinstance(multiparams[0], list) or isinstance(multiparams[0], tuple) or isinstance(multiparams[0], dict)):
             parameters = multiparams[0]
         else:
             parameters = list(multiparams)
@@ -560,7 +560,7 @@ class Connection(Connectable):
     def _execute_raw(self, context):
         self.__engine.logger.info(context.statement)
         self.__engine.logger.info(repr(context.parameters))
-        if context.parameters is not None and isinstance(context.parameters, list) and len(context.parameters) > 0 and (isinstance(context.parameters[0], list) or isinstance(context.parameters[0], dict)):
+        if context.parameters is not None and isinstance(context.parameters, list) and len(context.parameters) > 0 and (isinstance(context.parameters[0], list) or isinstance(context.parameters[0], tuple) or isinstance(context.parameters[0], dict)):
             self._executemany(context)
         else:
             self._execute(context)
index ce60a21c7687bb1d25dc240098dbfa8e69a7acad..85b24be33506c693eb55a74384f87c76a6663c87 100644 (file)
@@ -25,11 +25,13 @@ class ExecuteTest(testbase.PersistTest):
     @testbase.supported('sqlite')
     def test_raw_qmark(self):
         for conn in (testbase.db, testbase.db.connect()):
-            conn.execute("insert into users (user_id, user_name) values (?, ?)", [1,"jack"])
-            conn.execute("insert into users (user_id, user_name) values (?, ?)", [2,"ed"], [3,"horse"])
-            conn.execute("insert into users (user_id, user_name) values (?, ?)", 4, 'sally')
+            conn.execute("insert into users (user_id, user_name) values (?, ?)", (1,"jack"))
+            conn.execute("insert into users (user_id, user_name) values (?, ?)", [2,"fred"])
+            conn.execute("insert into users (user_id, user_name) values (?, ?)", [3,"ed"], [4,"horse"])
+            conn.execute("insert into users (user_id, user_name) values (?, ?)", (5,"barney"), (6,"donkey"))
+            conn.execute("insert into users (user_id, user_name) values (?, ?)", 7, 'sally')
             res = conn.execute("select * from users")
-            assert res.fetchall() == [(1, "jack"), (2, "ed"), (3, "horse"), (4, 'sally')]
+            assert res.fetchall() == [(1, "jack"), (2, "fred"), (3, "ed"), (4, "horse"), (5, "barney"), (6, "donkey"), (7, 'sally')]
             conn.execute("delete from users")
 
     @testbase.supported('mysql')