'Return metadata about the columns which would be
returned by this :class:`.Query`.
Format is a list of dictionaries::
user_alias = aliased(User, name=\'user2\')
q = sess.query(User, User.id, user_alias)
# this expression:
q.column_descriptions
# would return:
\'name\':\'User\',
\'type\':User,
\'aliased\':False,
\'expr\':User,
\'name\':\'id\',
\'type\':Integer(),
\'aliased\':False,
\'expr\':User.id,
\'name\':\'user2\',
\'type\':User,
\'aliased\':True,
\'expr\':user_alias'

@property
def column_descriptions(self):

    return [{'name': ent._label_name, 'type': ent.type, 'aliased': getattr(ent, 'is_aliased_class', False), 'expr': ent.expr} for ent in self._entities]
