From 237bf917f7968a8d5fdb18fd9a0624d11f9a8144 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sat, 24 Dec 2005 15:33:47 +0000 Subject: [PATCH] the 'column' function is optional to point a property to a column when constructing a mapper can also be specified as a list to indicate overlap mapper columns come from its table, no need to add from given columns --- lib/sqlalchemy/mapping/mapper.py | 9 +++++---- test/objectstore.py | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/sqlalchemy/mapping/mapper.py b/lib/sqlalchemy/mapping/mapper.py index df308a1a22..5a04ea4b29 100644 --- a/lib/sqlalchemy/mapping/mapper.py +++ b/lib/sqlalchemy/mapping/mapper.py @@ -99,13 +99,13 @@ class Mapper(object): else: for t in self.tables + [self.table]: try: - list = self.pks_by_table[t] + l = self.pks_by_table[t] except KeyError: - list = self.pks_by_table.setdefault(t, util.HashSet()) + l = self.pks_by_table.setdefault(t, util.HashSet()) if not len(t.primary_key): raise "Table " + t.name + " has no primary key columns. Specify primary_key argument to mapper." for k in t.primary_key: - list.append(k) + l.append(k) # make table columns addressable via the mapper self.columns = util.OrderedProperties() @@ -123,8 +123,9 @@ class Mapper(object): if properties is not None: for key, prop in properties.iteritems(): if isinstance(prop, schema.Column): - self.columns[key] = prop prop = ColumnProperty(prop) + elif isinstance(prop, list) and isinstance(prop[0], schema.Column): + prop = ColumnProperty(*prop) self.props[key] = prop if isinstance(prop, ColumnProperty): for col in prop.columns: diff --git a/test/objectstore.py b/test/objectstore.py index 63a694de2b..d14d8bfe08 100644 --- a/test/objectstore.py +++ b/test/objectstore.py @@ -181,8 +181,8 @@ class SaveTest(AssertMixin): usersaddresses = sql.join(users, addresses, users.c.user_id == addresses.c.user_id) m = mapper(User, usersaddresses, primarytable = users, properties = dict( - email = column(addresses.c.email_address), - foo_id = column(users.c.user_id, addresses.c.user_id) + email = addresses.c.email_address, + foo_id = [users.c.user_id, addresses.c.user_id], ) ) -- 2.47.2