]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Ensure RowTuple names are correct by adding "key" to QueryableAttribute.
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 12 Jan 2009 15:58:09 +0000 (15:58 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 12 Jan 2009 15:58:09 +0000 (15:58 +0000)
lib/sqlalchemy/orm/attributes.py
lib/sqlalchemy/orm/query.py
test/orm/mapper.py

index 1606f82674f30ee6bfa9eb1ec43a81e90f13745b..d7c2e8772f944f46cd342c8ce9dbfc0ec4e1b8b1 100644 (file)
@@ -99,7 +99,7 @@ class QueryableAttribute(interfaces.PropComparator):
           comparator
             a sql.Comparator to which class-level compare/math events will be sent
         """
-
+        self.key = key
         self.impl = impl
         self.comparator = comparator
         self.parententity = parententity
@@ -182,7 +182,7 @@ def proxied_attribute_factory(descriptor):
             self._parententity = parententity
             self.impl = _ProxyImpl(key)
 
-        @property
+        @util.memoized_property
         def comparator(self):
             if util.callable(self._comparator):
                 self._comparator = self._comparator()
@@ -218,10 +218,6 @@ def proxied_attribute_factory(descriptor):
                             attribute)
                     )
 
-        def _property(self):
-            return self._parententity.get_property(self.key, resolve_synonyms=True)
-        property = property(_property)
-
     Proxy.__name__ = type(descriptor).__name__ + 'Proxy'
 
     util.monkeypatch_proxied_specials(Proxy, type(descriptor),
index f225f346a20b13e10c3741d921f48b782fab7552..e540ce21e211d68e8cfcb59c9f2286499eebcf5d 100644 (file)
@@ -1823,7 +1823,7 @@ class _ColumnEntity(_QueryEntity):
             column = sql.literal_column(column)
             self._result_label = column.name
         elif isinstance(column, attributes.QueryableAttribute):
-            self._result_label = column.property.key
+            self._result_label = column.key
             column = column.__clause_element__()
         else:
             self._result_label = getattr(column, 'key', None)
index c8a24babc7f7af912a0195a09cbf54aec3da56df..eaceb9230fbbeff911718d55a1448bb14ddcf4dc 100644 (file)
@@ -658,6 +658,11 @@ class MapperTest(_fixtures.FixtureTest):
         assert User.adlist.property
         
         sess = create_session()
+        
+        # test RowTuple names
+        row = sess.query(User.id, User.uname).first()
+        assert row.uname == row[1]
+        
         u = sess.query(User).filter(User.uname=='jack').one()
 
         fixture = self.static.user_address_result[0].addresses