You can control the names using the label() construct for scalar attributes and aliased for class constructs:
>>> from sqlalchemy.orm import aliased
>>> user_alias = aliased(User, name='user_alias')
>>> for row in session.query(user_alias, user_alias.name.label('name_label')).all():
... print row.user_alias, row.name_label
这似乎比普通类插入指令的描述符要多很多类型,可读性要差很多:
>>> for row in session.query(User, User.name).all():
... print row.User, row.name
但它一定是有原因的。该如何使用?有哪些好的用例?
每当需要在SQL中使用
SELECT ... FROM my_table my_table_alias ...
构造时,都会使用aliased()
或alias()
,大多数情况下,当在查询中多次使用同一个表时(自连接,带或不带额外表)。在某些情况下,还需要对子查询进行别名。文档中有一个示例:http://www.sqlalchemy.org/docs/orm/query.html?highlight=aliased#sqlalchemy.orm.util.AliasedClass
作为@jd。当在一个查询中多次使用同一个表时。 示例:
相关问题 更多 >
编程相关推荐