]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
support positional parameters at the execute level even for DBs where we dont expect...
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 19 Apr 2007 23:34:53 +0000 (23:34 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 19 Apr 2007 23:34:53 +0000 (23:34 +0000)
lib/sqlalchemy/engine/default.py
test/engine/execute.py

index 1f2001e05ecdb88b850f897816ba428ba9640e96..af1e42f38bb4b11debe8007545f9872183fc6f9b 100644 (file)
@@ -180,8 +180,10 @@ class DefaultExecutionContext(base.ExecutionContext):
             return params
         else:
             def proc(d):
-                if d is None:
-                    return None
+                # sigh, sometimes we get positional arguments with a dialect
+                # that doesnt specify positional (because of execute_text())
+                if not isinstance(d, dict):
+                    return d
                 return dict([(k.encode(self.dialect.encoding), d[k]) for k in d])
             if isinstance(params, list):
                 return [proc(d) for d in params]
index 916c28e696cd15fc1346ba9198f8be1c3f17f0a6..480158580fd210a4af3ba246229e8b4c6b95c445 100644 (file)
@@ -34,7 +34,7 @@ class ExecuteTest(testbase.PersistTest):
             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')
+    @testbase.supported('mysql', 'postgres')
     def test_raw_sprintf(self):
         for conn in (testbase.db, testbase.db.connect()):
             conn.execute("insert into users (user_id, user_name) values (%s, %s)", [1,"jack"])