首页 > 解决方案 > sqlalchemy:重命名 *query* 级别的列

问题描述

我需要重命名查询中的列,但我不能在列级别上这样做,例如

session.query(MyModel.col_name.label('new_name'))

有没有办法重命名生成的查询对象上的列?

例如,像

session.query(...).blah().blah().rename_column('old_name', 'new_name')

标签: pythonsqlalchemy

解决方案


看起来没有任何内置解决方案 - 但这是我实施的一种解决方法,它可能会对您有所帮助:

在执行查询之前重命名:

# Start off with your regular query – but as a subquery
query = session.query(MyModel.col_name.label('old_name')).subquery()

# Now, perform a second query with new labels
query_2 = session.query(query.c.old_name.label('new_name'))

# Or, if there's only one column:
query_3 = session.query(query.label('new_name'))

推荐阅读