]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
check the isinsert/isupdate flags before calling __process_defaults
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 6 Mar 2008 16:54:55 +0000 (16:54 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 6 Mar 2008 16:54:55 +0000 (16:54 +0000)
lib/sqlalchemy/engine/default.py

index cc4eb60d2acc96667f9fc206e9e9222fa544d291..dfeefa337c9375661670222652c751cb06ace125 100644 (file)
@@ -176,7 +176,8 @@ class DefaultExecutionContext(base.ExecutionContext):
                 self.executemany = len(parameters) > 1
 
             self.cursor = self.create_cursor()
-            self.__process_defaults()
+            if self.isinsert or self.isupdate:
+                self.__process_defaults()
             self.parameters = self.__convert_compiled_params(self.compiled_parameters)
 
         elif statement is not None:
@@ -355,42 +356,41 @@ class DefaultExecutionContext(base.ExecutionContext):
         """generate default values for compiled insert/update statements,
         and generate last_inserted_ids() collection."""
 
-        if self.isinsert or self.isupdate:
-            if self.executemany:
-                if len(self.compiled.prefetch):
-                    drunner = self.dialect.defaultrunner(self)
-                    params = self.compiled_parameters
-                    for param in params:
-                        # assign each dict of params to self.compiled_parameters;
-                        # this allows user-defined default generators to access the full
-                        # set of bind params for the row
-                        self.compiled_parameters = param
-                        for c in self.compiled.prefetch:
-                            if self.isinsert:
-                                val = drunner.get_column_default(c)
-                            else:
-                                val = drunner.get_column_onupdate(c)
-                            if val is not None:
-                                param[c.key] = val
-                    self.compiled_parameters = params
-
-            else:
-                compiled_parameters = self.compiled_parameters[0]
+        if self.executemany:
+            if len(self.compiled.prefetch):
                 drunner = self.dialect.defaultrunner(self)
+                params = self.compiled_parameters
+                for param in params:
+                    # assign each dict of params to self.compiled_parameters;
+                    # this allows user-defined default generators to access the full
+                    # set of bind params for the row
+                    self.compiled_parameters = param
+                    for c in self.compiled.prefetch:
+                        if self.isinsert:
+                            val = drunner.get_column_default(c)
+                        else:
+                            val = drunner.get_column_onupdate(c)
+                        if val is not None:
+                            param[c.key] = val
+                self.compiled_parameters = params
 
-                for c in self.compiled.prefetch:
-                    if self.isinsert:
-                        val = drunner.get_column_default(c)
-                    else:
-                        val = drunner.get_column_onupdate(c)
-
-                    if val is not None:
-                        compiled_parameters[c.key] = val
+        else:
+            compiled_parameters = self.compiled_parameters[0]
+            drunner = self.dialect.defaultrunner(self)
 
+            for c in self.compiled.prefetch:
                 if self.isinsert:
-                    self._last_inserted_ids = [compiled_parameters.get(c.key, None) for c in self.compiled.statement.table.primary_key]
-                    self._last_inserted_params = compiled_parameters
+                    val = drunner.get_column_default(c)
                 else:
-                    self._last_updated_params = compiled_parameters
+                    val = drunner.get_column_onupdate(c)
+
+                if val is not None:
+                    compiled_parameters[c.key] = val
+
+            if self.isinsert:
+                self._last_inserted_ids = [compiled_parameters.get(c.key, None) for c in self.compiled.statement.table.primary_key]
+                self._last_inserted_params = compiled_parameters
+            else:
+                self._last_updated_params = compiled_parameters
 
-                self.postfetch_cols = self.compiled.postfetch
+            self.postfetch_cols = self.compiled.postfetch