diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-08-18 17:12:06 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-08-18 17:15:04 -0400 |
commit | 399c03939768d4c8afb29ca1e091b046ea4fc88f (patch) | |
tree | 93fdbe755ee82f15ad727a605ccee84d236517fb | |
parent | 4ed640ba907b529d79c634baf37792ce14e59805 (diff) | |
download | sqlalchemy-399c03939768d4c8afb29ca1e091b046ea4fc88f.tar.gz |
- optimize collection of cols we insert as none
-rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 18 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/persistence.py | 10 |
2 files changed, 11 insertions, 17 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 14dc5d7f8..89c092b58 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -1894,27 +1894,27 @@ class Mapper(InspectionAttr): """ @_memoized_configured_property - def _propkey_to_col(self): + def _insert_cols_as_none(self): return dict( ( table, - dict( - (self._columntoproperty[col].key, col) - for col in columns - ) + frozenset( + col.key for col in columns + if not col.primary_key and + not col.server_default and not col.default) ) for table, columns in self._cols_by_table.items() ) @_memoized_configured_property - def _col_to_propkey(self): + def _propkey_to_col(self): return dict( ( table, - [ - (col, self._columntoproperty[col].key) + dict( + (self._columntoproperty[col].key, col) for col in columns - ] + ) ) for table, columns in self._cols_by_table.items() ) diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py index c949e4776..e36f87991 100644 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@ -282,14 +282,8 @@ def _collect_insert_commands(table, states_to_insert): else: params[col.key] = value - for colkey in ( - set( - col.key for col in - mapper._cols_by_table[table] - if not col.primary_key and - not col.server_default and not col.default - ).difference(params).difference(value_params) - ): + for colkey in mapper._insert_cols_as_none[table].\ + difference(params).difference(value_params): params[colkey] = None has_all_pks = mapper._pk_keys_by_table[table].issubset(params) |