From: Mike Bayer Date: Fri, 7 Dec 2007 15:28:20 +0000 (+0000) Subject: fixed key error when no pks could be located X-Git-Tag: rel_0_4_2~99 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=33f62587cd5096122d1474c03e0194344834a651;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git fixed key error when no pks could be located --- diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 5d727bd6ae..d0575eb385 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -418,7 +418,7 @@ class Mapper(object): self._pks_by_table[k.table] = util.OrderedSet() self._pks_by_table[k.table].add(k) - if len(self._pks_by_table[self.mapped_table]) == 0: + if self.mapped_table not in self._pks_by_table or len(self._pks_by_table[self.mapped_table]) == 0: raise exceptions.ArgumentError("Could not assemble any primary key columns for mapped table '%s'" % (self.mapped_table.name)) if self.inherits is not None and not self.concrete and not self.primary_key_argument: diff --git a/test/orm/mapper.py b/test/orm/mapper.py index df1b6bba1d..bde51b222e 100644 --- a/test/orm/mapper.py +++ b/test/orm/mapper.py @@ -66,7 +66,15 @@ class MapperTest(MapperSuperTest): u2 = s.query(User).filter_by(user_name='jack').one() assert u is u2 - + + def test_no_pks(self): + s = select([users.c.user_name]).alias('foo') + try: + mapper(User, s) + assert False + except exceptions.ArgumentError, e: + assert str(e) == "Could not assemble any primary key columns for mapped table 'foo'" + def test_compileonsession(self): m = mapper(User, users) session = create_session()