summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-08-05 20:15:28 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-08-05 20:15:28 +0000
commit4cd1902796546d5d2b2927c8e2afbcb00459341f (patch)
treeb4fd7dc33bdb6c55c2380720d5fb172c154aec0c /lib/sqlalchemy
parent3c26d5700385ac2e72e01efe2531b126f4292eee (diff)
downloadsqlalchemy-4cd1902796546d5d2b2927c8e2afbcb00459341f.tar.gz
- 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.
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/query.py8
1 files changed, 6 insertions, 2 deletions
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)