]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
fixed key error when no pks could be located
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 7 Dec 2007 15:28:20 +0000 (15:28 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 7 Dec 2007 15:28:20 +0000 (15:28 +0000)
lib/sqlalchemy/orm/mapper.py
test/orm/mapper.py

index 5d727bd6ae402a11cbd1253bcea014f2cacdc68e..d0575eb385e05c8802dcb5d6eb66edf587c1101f 100644 (file)
@@ -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:
index df1b6bba1d71312f63f98ab3e042e450923e1aef..bde51b222eee044c0d5ac94b7d2360ef9cb5c2be 100644 (file)
@@ -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()