=======
CHANGES
=======
+0.5beta4
+========
+
+- orm
+ - 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.
+
0.5beta3
========
- 0.5beta3 includes all bugfixes listed under release
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)
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)
)
+ row = sess.query(Engineer.name, Engineer.primary_language).filter(Engineer.name=='dilbert').first()
+ assert row.name == 'dilbert'
+ assert row.primary_language == 'java'
+
+
self.assertEquals(
sess.query(Engineer.name, Engineer.primary_language).all(),
[(u'dilbert', u'java'), (u'wally', u'c++'), (u'vlad', u'cobol')]
session.expire(m1, ['manager_data'])
self.assertEquals(m1.manager_data, "knows how to manage things")
+ row = session.query(Engineer.name, Engineer.employee_id).filter(Engineer.name=='Kurt').first()
+ assert row.name == 'Kurt'
+ assert row.employee_id == e1.employee_id
+
@testing.resolve_artifact_names
def test_multi_qualification(self):
session = create_session()
mapper(User, uni_users)
assert User(id=7) == create_session(bind=testing.db).query(User).get(7)
+class RowTupleTest(QueryTest):
+ keep_mappers = False
+
+ def setup_mappers(self):
+ pass
+
+ def test_custom_names(self):
+ mapper(User, users, properties={
+ 'uname':users.c.name
+ })
+
+ row = create_session().query(User.id, User.uname).filter(User.id==7).first()
+ assert row.id == 7
+ assert row.uname == 'jack'
+
class GetTest(QueryTest):
def test_get(self):
s = create_session()