SQLAlchemy如何为SELECT查询中的静态字符串字段添加自定义标签
解决方案
报错原因
你之前的写法报错是因为'somestring'是Python原生字符串对象,本身没有label方法。label是SQLAlchemy提供的SQL表达式元素的专属方法,需要先把静态值包装为SQL表达式对象才能使用。
正确实现方式
首先导入SQLAlchemy提供的literal方法,用于将Python原生值转换为SQL表达式对象:
from sqlalchemy import literal
改写你的查询代码如下,即可实现和原生SQL完全一致的效果:
query = db.session.query( literal('somestring').label('my_col_name') ).select_from(my_table)
UNION适配说明
通过literal包装生成的列属于标准SQL表达式列,和普通表字段的属性完全兼容,后续直接用该查询对象和其他同结构查询执行UNION操作即可,无需额外适配。
内容的提问来源于stack exchange,提问作者dina
相关产品推荐
相关产品推荐

