]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
(no commit message)
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 23 Oct 2005 18:24:20 +0000 (18:24 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 23 Oct 2005 18:24:20 +0000 (18:24 +0000)
lib/sqlalchemy/databases/oracle.py

index 5d6265dbf2215a019f52abc0ae10d06597fa28a6..b0b9bf8c5ce496b3c637b77b0fb6e3d3ebb8fd0b 100644 (file)
@@ -109,22 +109,27 @@ class OracleSQLEngine(ansisql.ANSISQLEngine):
 
     def pre_exec(self, connection, cursor, statement, parameters, echo = None, compiled = None, **kwargs):
         # if a sequence was explicitly defined we do it here
-        if compiled is None or isinstance(parameters, list): return
+        if compiled is None: return
         if getattr(compiled, "isinsert", False):
-            last_inserted_ids = []
-            for primary_key in compiled.statement.table.primary_keys:
-                if not parameters.has_key(primary_key.key) or parameters[primary_key.key] is None:
-                    if primary_key.sequence is None:
-                        raise "Column '%s.%s': Oracle primary key columns require schema.Sequence to create ids" % (primary_key.table.name, primary_key.name)
-                    if echo is True or self.echo:
-                        self.log("select %s.nextval from dual" % primary_key.sequence.name)
-                    cursor.execute("select %s.nextval from dual" % primary_key.sequence.name)
-                    newid = cursor.fetchone()[0]
-                    parameters[primary_key.key] = newid
-                    if compiled.statement.parameters is not None:
-                       compiled.statement.parameters[primary_key.key] = bindparam(primary_key.key)
-                last_inserted_ids.append(parameters[primary_key.key])
-            self.context.last_inserted_ids = last_inserted_ids
+            if isinstance(parameters, list):
+                plist = parameters
+            else:
+                plist = [parameters]
+            for param in plist:
+                last_inserted_ids = []
+                for primary_key in compiled.statement.table.primary_keys:
+                    if not param.has_key(primary_key.key) or param[primary_key.key] is None:
+                        if primary_key.sequence is None:
+                            raise "Column '%s.%s': Oracle primary key columns require schema.Sequence to create ids" % (primary_key.table.name, primary_key.name)
+                        if echo is True or self.echo:
+                            self.log("select %s.nextval from dual" % primary_key.sequence.name)
+                        cursor.execute("select %s.nextval from dual" % primary_key.sequence.name)
+                        newid = cursor.fetchone()[0]
+                        param[primary_key.key] = newid
+                        #if compiled.statement.parameters is not None:
+                         #   compiled.statement.parameters[primary_key.key] = bindparam(primary_key.key)
+                    last_inserted_ids.append(param[primary_key.key])
+                self.context.last_inserted_ids = last_inserted_ids
 
     def post_exec(self, connection, cursor, statement, parameters, echo = None, compiled = None, **kwargs):
        pass