summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-06-27 20:38:43 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-06-27 20:38:43 +0000
commit01e9fa8f47a79fecb89913f1637fa9ef03ab6e22 (patch)
treea7b8ca6780793bac36a561805b2b865a15d9fd35
parent6f70a1c386af9f59a9b7dc67d45158d04bd74bf4 (diff)
downloadsqlalchemy-01e9fa8f47a79fecb89913f1637fa9ef03ab6e22.tar.gz
- fix to the "column_prefix" flag so that the mapper does not
trip over synonyms (and others) that are named after the column's actual "key" (since, column_prefix means "dont use the key").
-rw-r--r--CHANGES3
-rw-r--r--lib/sqlalchemy/orm/mapper.py2
-rw-r--r--test/orm/mapper.py6
3 files changed, 9 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index 0b17de8d7..c77f76318 100644
--- a/CHANGES
+++ b/CHANGES
@@ -25,6 +25,9 @@
- small fix to eager loading to better work with eager loads
to polymorphic mappers that are using a straight "outerjoin"
clause
+ - fix to the "column_prefix" flag so that the mapper does not
+ trip over synonyms (and others) that are named after the column's actual
+ "key" (since, column_prefix means "dont use the key").
- sql
- fixed grouping of compound selects to give correct results. will break
on sqlite in some cases, but those cases were producing incorrect
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
index 994264cc7..461b9da7a 100644
--- a/lib/sqlalchemy/orm/mapper.py
+++ b/lib/sqlalchemy/orm/mapper.py
@@ -555,7 +555,7 @@ class Mapper(object):
self.columns[column.key] = self.select_table.corresponding_column(column, keys_ok=True, raiseerr=True)
column_key = (self.column_prefix or '') + column.key
- prop = self.__props.get(column.key, None)
+ prop = self.__props.get(column_key, None)
if prop is None:
prop = ColumnProperty(column)
self.__props[column_key] = prop
diff --git a/test/orm/mapper.py b/test/orm/mapper.py
index a8beabf6d..399b87e33 100644
--- a/test/orm/mapper.py
+++ b/test/orm/mapper.py
@@ -76,12 +76,16 @@ class MapperTest(MapperSuperTest):
assert str(e) == "Invalid cascade option 'fake'"
def testcolumnprefix(self):
- mapper(User, users, column_prefix='_')
+ mapper(User, users, column_prefix='_', properties={
+ 'user_name':synonym('_user_name')
+ })
s = create_session()
u = s.get(User, 7)
assert u._user_name=='jack'
assert u._user_id ==7
assert not hasattr(u, 'user_name')
+ u2 = s.query(User).filter_by(user_name='jack').one()
+ assert u is u2
def testrefresh(self):
mapper(User, users, properties={'addresses':relation(mapper(Address, addresses))})