diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-06-27 20:38:43 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-06-27 20:38:43 +0000 |
| commit | 01e9fa8f47a79fecb89913f1637fa9ef03ab6e22 (patch) | |
| tree | a7b8ca6780793bac36a561805b2b865a15d9fd35 | |
| parent | 6f70a1c386af9f59a9b7dc67d45158d04bd74bf4 (diff) | |
| download | sqlalchemy-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-- | CHANGES | 3 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 2 | ||||
| -rw-r--r-- | test/orm/mapper.py | 6 |
3 files changed, 9 insertions, 2 deletions
@@ -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))}) |
