diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-04-16 22:35:53 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-04-16 22:35:53 +0000 |
| commit | 86fef1e4593a6c25e83b2aca7577c62bec9fa2a9 (patch) | |
| tree | cad15013e8beb0bdb8fa2b870adc1c3bac3ac6e9 /lib/sqlalchemy | |
| parent | 07cd648f3f34e0dac42304e16e2ecb7d992a2859 (diff) | |
| download | sqlalchemy-86fef1e4593a6c25e83b2aca7577c62bec9fa2a9.tar.gz | |
- removed meaningless entity_name argument from session.delete()
- session.merge() propigates given entity_name to locate that mapper if the given object
is transient (and therefore has no entity_name)
- some fixes to MockEngine which still is mostly useless for most cases.
- unitofwork test used incorrect session.delete() signature
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/engine/strategies.py | 5 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 11 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/session.py | 6 |
3 files changed, 15 insertions, 7 deletions
diff --git a/lib/sqlalchemy/engine/strategies.py b/lib/sqlalchemy/engine/strategies.py index 1b760fca8..ba9b0968a 100644 --- a/lib/sqlalchemy/engine/strategies.py +++ b/lib/sqlalchemy/engine/strategies.py @@ -180,9 +180,12 @@ class MockEngineStrategy(EngineStrategy): engine = property(lambda s: s) dialect = property(lambda s:s._dialect) - def contextual_connect(self): + def contextual_connect(self, **kwargs): return self + def compiler(self, statement, parameters, **kwargs): + return self._dialect.compiler(statement, parameters, engine=self, **kwargs) + def create(self, entity, **kwargs): kwargs['checkfirst'] = False entity.accept_visitor(self.dialect.schemagenerator(self, **kwargs)) diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 0279cca53..2bffef815 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -1803,12 +1803,17 @@ def has_mapper(object): return hasattr(object, '_entity_name') -def object_mapper(object, raiseerror=True): +def object_mapper(object, entity_name=None, raiseerror=True): """Given an object, return the primary Mapper associated with the object instance. object The object instance. + entity_name + Entity name of the mapper to retrieve, if the given instance is + transient. Otherwise uses the entity name already associated + with the instance. + raiseerror Defaults to True: raise an ``InvalidRequestError`` if no mapper can be located. If False, return None. @@ -1816,10 +1821,10 @@ def object_mapper(object, raiseerror=True): """ try: - mapper = mapper_registry[ClassKey(object.__class__, getattr(object, '_entity_name', None))] + mapper = mapper_registry[ClassKey(object.__class__, getattr(object, '_entity_name', entity_name))] except (KeyError, AttributeError): if raiseerror: - raise exceptions.InvalidRequestError("Class '%s' entity name '%s' has no mapper associated with it" % (object.__class__.__name__, getattr(object, '_entity_name', None))) + raise exceptions.InvalidRequestError("Class '%s' entity name '%s' has no mapper associated with it" % (object.__class__.__name__, getattr(object, '_entity_name', entity_name))) else: return None return mapper.compile() diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index d1639d395..35b35201d 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -437,7 +437,7 @@ class Session(object): else: self._update_impl(object, entity_name=entity_name) - def delete(self, object, entity_name=None): + def delete(self, object): """Mark the given instance as deleted. The delete operation occurs upon ``flush()``. @@ -446,7 +446,7 @@ class Session(object): for c in [object] + list(_object_mapper(object).cascade_iterator('delete', object)): self.uow.register_deleted(c) - def merge(self, object, entity_name=None, _recursive=None): + def merge(self, object,entity_name=None, _recursive=None): """Copy the state of the given `object` onto the persistent object with the same identifier. @@ -462,7 +462,7 @@ class Session(object): if _recursive is None: _recursive = util.Set() - mapper = _object_mapper(object) + mapper = _object_mapper(object, entity_name=entity_name) key = getattr(object, '_instance_key', None) if key is None: merged = mapper._create_instance(self) |
