diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-10-09 17:18:00 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-10-09 17:18:00 -0400 |
commit | 58ad3b5ed78249f1faf48774bf6dedd424a1f435 (patch) | |
tree | 46f10805d70064abfc405f49035d7c1e4e6648d8 /lib/sqlalchemy/orm/persistence.py | |
parent | 78a7bbdb3b0906a35528bdc829a08f0644d6fd7b (diff) | |
parent | 44e5a31ccee5335962602327132a4196fb1c7911 (diff) | |
download | sqlalchemy-pr200.tar.gz |
Merge remote-tracking branch 'origin/pr/200' into pr200pr200
Diffstat (limited to 'lib/sqlalchemy/orm/persistence.py')
-rw-r--r-- | lib/sqlalchemy/orm/persistence.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py index d89a93dd3..57ac0f08e 100644 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@ -1258,10 +1258,13 @@ class BulkUpdate(BulkUD): "Invalid expression type: %r" % key) def _do_exec(self): - values = dict( - (self._resolve_string_to_expr(k), v) - for k, v in self.values.items() - ) + if isinstance(self.values, (list, tuple)): + values = tuple((self._resolve_string_to_expr(k), v) + for k, v in self.values) + else: + values = dict((self._resolve_string_to_expr(k), v) + for k, v in self.values.items()) + update_stmt = sql.update(self.primary_table, self.context.whereclause, values, **self.update_kwargs) @@ -1311,7 +1314,9 @@ class BulkUpdateEvaluate(BulkEvaluate, BulkUpdate): def _additional_evaluators(self, evaluator_compiler): self.value_evaluators = {} - for key, value in self.values.items(): + values = (self.values.items() if hasattr(self.values, 'items') + else self.values) + for key, value in values: key = self._resolve_key_to_attrname(key) if key is not None: self.value_evaluators[key] = evaluator_compiler.process( |