summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2015-06-13 20:27:06 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2015-06-13 20:27:06 -0400
commitbcbfcca2360a58ec1b5a9da1b2c45e8781904b82 (patch)
tree9d340c73b34be6f49a105cb7f71adb17be800be2
parent2497d559ddeb68e52eb1838deeed7e3305280aa5 (diff)
downloadsqlalchemy-bcbfcca2360a58ec1b5a9da1b2c45e8781904b82.tar.gz
- restore the approach we have for pk_params, but in order
to suit #3451 exclude these columns from the "params" dictionary in the first place, revises pr github:181
-rw-r--r--lib/sqlalchemy/orm/persistence.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py
index 254d3bf09..a42ed2f7c 100644
--- a/lib/sqlalchemy/orm/persistence.py
+++ b/lib/sqlalchemy/orm/persistence.py
@@ -443,7 +443,8 @@ def _collect_update_commands(
params = dict(
(propkey_to_col[propkey].key, state_dict[propkey])
for propkey in
- set(propkey_to_col).intersection(state_dict)
+ set(propkey_to_col).intersection(state_dict).difference(
+ mapper._pk_keys_by_table[table])
)
else:
params = {}
@@ -472,11 +473,12 @@ def _collect_update_commands(
continue
if bulk:
- pk_params = {}
- for propkey in set(propkey_to_col).intersection(mapper._pk_keys_by_table[table]):
- col = propkey_to_col[propkey]
- pk_params[col._label] = state_dict.get(propkey)
- params.pop(col.key, None)
+ pk_params = dict(
+ (propkey_to_col[propkey]._label, state_dict.get(propkey))
+ for propkey in
+ set(propkey_to_col).
+ intersection(mapper._pk_keys_by_table[table])
+ )
else:
pk_params = {}
for col in pks: