summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2005-10-16 20:34:19 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2005-10-16 20:34:19 +0000
commit80fae8ca4157f6c67ba0b9abbf83bcb8b49fd4dc (patch)
tree8dae1d273fc073d246ab3ea37fc138fe5a11cc29
parent8b2738390c9baeb5403c1f8b115cb35c45076612 (diff)
downloadsqlalchemy-80fae8ca4157f6c67ba0b9abbf83bcb8b49fd4dc.tar.gz
-rw-r--r--lib/sqlalchemy/mapper.py14
-rw-r--r--test/objectstore.py16
-rw-r--r--test/testbase.py2
3 files changed, 23 insertions, 9 deletions
diff --git a/lib/sqlalchemy/mapper.py b/lib/sqlalchemy/mapper.py
index 8e068fb6f..39ce4bc0e 100644
--- a/lib/sqlalchemy/mapper.py
+++ b/lib/sqlalchemy/mapper.py
@@ -110,10 +110,11 @@ def noload(name):
def object_mapper(object):
"""given an object, returns the primary Mapper associated with the object
or the object's class."""
- try:
- return _mappers[object._mapper]
- except AttributeError:
- return class_mapper(object.__class__)
+ return class_mapper(object.__class__)
+# try:
+# return _mappers[object._mapper]
+# except AttributeError:
+# return class_mapper(object.__class__)
def class_mapper(class_):
"""given a class, returns the primary Mapper associated with the class."""
@@ -499,7 +500,8 @@ class Mapper(object):
instance = self.extension.create_instance(self, row, imap, self.class_)
if instance is None:
instance = self.class_(_mapper_nohistory=True)
- instance._mapper = self.hashkey
+ # attach mapper hashkey to the instance ?
+ #instance._mapper = self.hashkey
instance._instance_key = identitykey
imap[identitykey] = instance
@@ -746,7 +748,7 @@ class PropertyLoader(MapperProperty):
return (obj2, obj1)
def process_dependencies(self, task, deplist, uowcommit, delete = False):
- #print self.mapper.table.name + " " + repr(len(deplist)) + " process_dep isdelete " + repr(delete)
+ print self.mapper.table.name + " " + repr(len(deplist)) + " process_dep isdelete " + repr(delete)
# fucntion to set properties across a parent/child object plus an "association row",
# based on a join condition
diff --git a/test/objectstore.py b/test/objectstore.py
index faa579353..a8b3cd112 100644
--- a/test/objectstore.py
+++ b/test/objectstore.py
@@ -313,20 +313,32 @@ class SaveTest(AssertMixin):
self.assert_(addresstable[0].row == (addressid, userid, 'somethingnew@foo.com'))
self.assert_(u.user_id == userid and a2.address_id == addressid)
- def testonetomany2(self):
+ def testmapperswitch(self):
+ """test that, if we change mappers, the new one gets used fully. not sure if
+ i want it to work that way, but probably."""
users.insert().execute(
dict(user_id = 7, user_name = 'jack'),
dict(user_id = 8, user_name = 'ed'),
dict(user_id = 9, user_name = 'fred')
)
db.connection().commit()
+
+ User.mapper = assignmapper(users)
+ User.mapper.select()
User.mapper = assignmapper(users, properties = dict(
addresses = relation(Address, addresses, lazy = False)
))
u = User.mapper.select()
u[0].addresses.append(Address())
u[0].addresses[0].email_address='hi'
- objectstore.commit()
+ self.assert_sql(db, lambda: objectstore.commit(),
+ [
+ (
+ "INSERT INTO email_addresses (address_id, user_id, email_address) VALUES (:address_id, :user_id, :email_address)",
+ {'email_address': 'hi', 'address_id': None, 'user_id': 7}
+ ),
+ ]
+ )
def testchildmanipulations(self):
"""digs deeper into modifying the child items of an object to insure the correct
diff --git a/test/testbase.py b/test/testbase.py
index f72d58c9d..8f7496c63 100644
--- a/test/testbase.py
+++ b/test/testbase.py
@@ -61,7 +61,7 @@ class EngineAssert(object):
(query, params) = item
if callable(params):
params = params()
- self.unittest.assert_(statement == query and params == parameters, query + repr(params) + statement + repr(parameters))
+ self.unittest.assert_(statement == query and params == parameters, "Testing for query '%s' params %s, received '%s' with params %s" % (query, repr(params), statement, repr(parameters)))
return self.realexec(statement, parameters, **kwargs)
def runTests(suite):