From 4cd1902796546d5d2b2927c8e2afbcb00459341f Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 5 Aug 2008 20:15:28 +0000 Subject: - The RowTuple object returned by Query(*cols) now features keynames which prefer mapped attribute names over column keys, column keys over column names, i.e. Query(Class.foo, Class.bar) will have names "foo" and "bar" even if those are not the names of the underlying Column objects. Direct Column objects such as Query(table.c.col) will return the "key" attribute of the Column. --- lib/sqlalchemy/orm/query.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'lib/sqlalchemy') diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 605486203..43dde9fc0 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1611,11 +1611,15 @@ class _ColumnEntity(_QueryEntity): if isinstance(column, basestring): column = sql.literal_column(column) + self._result_label = column.name elif isinstance(column, (attributes.QueryableAttribute, mapper.Mapper._CompileOnAttr)): + self._result_label = column.impl.key column = column.__clause_element__() elif not isinstance(column, sql.ColumnElement): raise sa_exc.InvalidRequestError("Invalid column expression '%r'" % column) - + else: + self._result_label = getattr(column, 'key', None) + if not hasattr(column, '_label'): column = column.label(None) @@ -1656,7 +1660,7 @@ class _ColumnEntity(_QueryEntity): def proc(context, row): return row[column] - return (proc, getattr(column, 'name', None)) + return (proc, self._result_label) def setup_context(self, query, context): column = self._resolve_expr_against_query_aliases(query, self.column, context) -- cgit v1.2.1