diff options
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 10 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/persistence.py | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 60848097c..87f2a24b0 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -2020,6 +2020,16 @@ class Mapper(InspectionAttr): ) @_memoized_configured_property + def _pk_attr_keys_by_table(self): + return dict( + ( + table, + frozenset([self._columntoproperty[col].key for col in pks]) + ) + for table, pks in self._pks_by_table.items() + ) + + @_memoized_configured_property def _server_default_cols(self): return dict( ( diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py index 2bc189c1d..bf51a2a83 100644 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@ -522,7 +522,7 @@ def _collect_update_commands( (propkey_to_col[propkey]._label, state_dict.get(propkey)) for propkey in set(propkey_to_col). - intersection(mapper._pk_keys_by_table[table]) + intersection(mapper._pk_attr_keys_by_table[table]) ) else: pk_params = {} |
