diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-11-30 03:34:06 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-11-30 03:34:06 +0000 |
| commit | 8bf75013ac2f5cc459471d40482427851ceb2be7 (patch) | |
| tree | be5ace6e143fb4cc8b24f7dcaa33434c18fc6b61 /lib/sqlalchemy | |
| parent | 2b306350e24e4e7e304c85b9ea5e746b6b38adb2 (diff) | |
| download | sqlalchemy-8bf75013ac2f5cc459471d40482427851ceb2be7.tar.gz | |
remove a little cruft
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 27 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/properties.py | 3 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/session.py | 2 |
3 files changed, 17 insertions, 15 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 52523d787..5673be44c 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -401,6 +401,11 @@ class Mapper(object): if not self.tables: raise exceptions.InvalidRequestError("Could not find any Table objects in mapped table '%s'" % str(self.mapped_table)) + # TODO: move the "figure pks" step down into compile_properties; after + # all columns have been mapped, assemble PK columns and their + # proxied parents into the pks_by_table collection, then get rid + # of the _has_pks method + # determine primary key columns self.pks_by_table = {} @@ -1004,6 +1009,7 @@ class Mapper(object): continue pks = mapper.pks_by_table[table] instance_key = mapper.identity_key_from_instance(obj) + if self.__should_log_debug: self.__log_debug("save_obj() table '%s' instance %s identity %s" % (table.name, mapperutil.instance_str(obj), str(instance_key))) @@ -1042,7 +1048,7 @@ class Mapper(object): params[col._label] = mapper.get_attr_by_column(obj, col) params[col.key] = params[col._label] + 1 for prop in mapper._columntoproperty.values(): - history = prop.get_history(obj, passive=True) + history = attributes.get_history(obj, prop.key, passive=True) if history and history.added_items(): hasdata = True elif col in pks: @@ -1055,7 +1061,7 @@ class Mapper(object): prop = mapper._getpropbycolumn(col, False) if prop is None: continue - history = prop.get_history(obj, passive=True) + history = attributes.get_history(obj, prop.key, passive=True) if history: a = history.added_items() if a: @@ -1065,8 +1071,6 @@ class Mapper(object): params[col.key] = prop.get_col_value(col, a[0]) hasdata = True if hasdata: - # if none of the attributes changed, dont even - # add the row to be updated. update.append((obj, params, mapper, connection, value_params)) if update: @@ -1079,8 +1083,9 @@ class Mapper(object): statement = table.update(clause) rows = 0 supports_sane_rowcount = True + pks = mapper.pks_by_table[table] def comparator(a, b): - for col in mapper.pks_by_table[table]: + for col in pks: x = cmp(a[1][col._label],b[1][col._label]) if x != 0: return x @@ -1119,13 +1124,11 @@ class Mapper(object): # synchronize newly inserted ids from one table to the next # TODO: this fires off more than needed, try to organize syncrules # per table - def sync(mapper): - inherit = mapper.inherits - if inherit is not None: - sync(inherit) - if mapper._synchronizer is not None: - mapper._synchronizer.execute(obj, obj) - sync(mapper) + mappers = list(mapper.iterate_to_root()) + mappers.reverse() + for m in mappers: + if m._synchronizer is not None: + m._synchronizer.execute(obj, obj) # testlib.pragma exempt:__hash__ inserted_objects.add((id(obj), obj, connection)) diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py index 00fa8f9d3..2c50ec92f 100644 --- a/lib/sqlalchemy/orm/properties.py +++ b/lib/sqlalchemy/orm/properties.py @@ -58,9 +58,6 @@ class ColumnProperty(StrategizedProperty): def setattr(self, object, value, column): setattr(object, self.key, value) - def get_history(self, obj, passive=False): - return attributes.get_history(obj, self.key, passive=passive) - def merge(self, session, source, dest, dont_load, _recursive): setattr(dest, self.key, getattr(source, self.key, None)) diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 6b6d67835..7097273f5 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -571,6 +571,8 @@ class Session(object): self.uow = unitofwork.UnitOfWork(self) self.identity_map = self.uow.identity_map + # TODO: need much more test coverage for bind_mapper() and similar ! + def bind_mapper(self, mapper, bind, entity_name=None): """Bind the given `mapper` or `class` to the given ``Engine`` or ``Connection``. |
