python - sqlalchemy:重命名 *query* 级别的列
问题描述
我需要重命名查询中的列,但我不能在列级别上这样做,例如
session.query(MyModel.col_name.label('new_name'))
有没有办法重命名生成的查询对象上的列?
例如,像
session.query(...).blah().blah().rename_column('old_name', 'new_name')
解决方案
看起来没有任何内置解决方案 - 但这是我实施的一种解决方法,它可能会对您有所帮助:
在执行查询之前重命名:
# 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'))
推荐阅读
- https - Traefik 未获得新域的 SSL 证书
- typescript - 为什么不推断其余的通用参数?
- python - 无法在 For 循环中更新 Pandas 行
- python - 有没有办法对多个数据帧的每个元素进行操作,然后将相应的元素合并到一个新的数据帧中?
- c - 如何验证地址是单播的?
- javascript - 将数据结构重构为新模式 - Javascript
- android - gradle 3.2.1 需要 Proguard 吗?
- apache-spark - spark可以并行读取大型s3 csv文件吗?
- php - Laravel 模型查询 - 可以使用 "Models:all()" 但 "where/whereRaw" 不返回任何数据
- python - 为什么两个类实例都改变了?