diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-08-05 20:15:28 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-08-05 20:15:28 +0000 |
| commit | 4cd1902796546d5d2b2927c8e2afbcb00459341f (patch) | |
| tree | b4fd7dc33bdb6c55c2380720d5fb172c154aec0c /lib/sqlalchemy | |
| parent | 3c26d5700385ac2e72e01efe2531b126f4292eee (diff) | |
| download | sqlalchemy-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.py | 8 |
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) |
