'name':'User',
'type':User,
'aliased':False,
+ 'expr':User,
},
{
'name':'id',
'type':Integer(),
- 'aliased':False
+ 'aliased':False,
+ 'expr':User.id,
},
{
'name':'user2',
'type':User,
- 'aliased':True
+ 'aliased':True,
+ 'expr':user_alias
}
]
'name':ent._label_name,
'type':ent.type,
'aliased':getattr(ent, 'is_aliased_class', False),
+ 'expr':ent.expr
}
for ent in self._entities
]
query._entities.append(self)
self.entities = [entity]
- self.entity_zero = entity
-
+ self.entity_zero = self.expr = entity
+
def setup_entity(self, entity, mapper, adapter,
from_obj, is_aliased_class, with_polymorphic):
self.mapper = mapper
"""Column/expression based entity."""
def __init__(self, query, column):
+ self.expr = column
+
if isinstance(column, basestring):
column = sql.literal_column(column)
self._label_name = column.name
user_alias = aliased(User)
address_alias = aliased(Address, name='aalias')
fn = func.count(User.id)
-
+ name_label = User.name.label('uname')
for q, asserted in [
(
sess.query(User),
- [{'name':'User', 'type':User, 'aliased':False}]
+ [{'name':'User', 'type':User, 'aliased':False, 'expr':User}]
),
(
sess.query(User.id, User),
[
- {'name':'id', 'type':users.c.id.type, 'aliased':False},
- {'name':'User', 'type':User, 'aliased':False}
+ {'name':'id', 'type':users.c.id.type, 'aliased':False,
+ 'expr':User.id},
+ {'name':'User', 'type':User, 'aliased':False, 'expr':User}
]
),
(
sess.query(User.id, user_alias),
[
- {'name':'id', 'type':users.c.id.type, 'aliased':False},
- {'name':None, 'type':User, 'aliased':True}
+ {'name':'id', 'type':users.c.id.type, 'aliased':False,
+ 'expr':User.id},
+ {'name':None, 'type':User, 'aliased':True,
+ 'expr':user_alias}
]
),
(
sess.query(address_alias),
[
- {'name':'aalias', 'type':Address, 'aliased':True}
+ {'name':'aalias', 'type':Address, 'aliased':True,
+ 'expr':address_alias}
]
),
(
- sess.query(User.name.label('uname'), fn),
+ sess.query(name_label, fn),
[
{'name':'uname', 'type':users.c.name.type,
- 'aliased':False},
- {'name':None, 'type':fn.type, 'aliased':False},
+ 'aliased':False,'expr':name_label},
+ {'name':None, 'type':fn.type, 'aliased':False,
+ 'expr':fn
+ },
]
)
]: