From 33f62587cd5096122d1474c03e0194344834a651 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 7 Dec 2007 15:28:20 +0000 Subject: [PATCH] fixed key error when no pks could be located --- lib/sqlalchemy/orm/mapper.py | 2 +- test/orm/mapper.py | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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() -- 2.47.3