summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-04-16 22:35:53 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-04-16 22:35:53 +0000
commit86fef1e4593a6c25e83b2aca7577c62bec9fa2a9 (patch)
treecad15013e8beb0bdb8fa2b870adc1c3bac3ac6e9 /lib/sqlalchemy
parent07cd648f3f34e0dac42304e16e2ecb7d992a2859 (diff)
downloadsqlalchemy-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.py5
-rw-r--r--lib/sqlalchemy/orm/mapper.py11
-rw-r--r--lib/sqlalchemy/orm/session.py6
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)