SQLAlchemy字符串拼接异常:+未转为SQLite的||运算符问题排查
使用SQLAlchemy构造SQLite日期表达式的字符串连接问题
我尝试用SQLAlchemy编写如下代码,构造日期计算的SQL表达式:
func.date(cls.entry_date, '+' + cls.duration + ' year', '-1 day')
实际生成的SQL语句:
date("My_Table"."Entry date", '+' + "My_Table"."Durée" || ' year', '-1 day', '-1 day')
但我需要的正确SQL语句应该是:
date("My_Table"."Entry date", '+' || "My_Table"."Durée" || ' year', '-1 day', '-1 day')
问题在于:cls.duration与' year'之间的+被正确转换为SQLite的字符串连接符||,但'+'与cls.duration之间的+始终无法转换,一直保留为+。我尝试更换'+'字符,也没有效果。
补充尝试的方案:
- 用
func.concat('+', cls.duration, ' year'),但SQLite不支持该函数; - 使用f-string可以达到效果,但我认为应该有更合适的SQLAlchemy原生实现方式,特此求助。
内容的提问来源于stack exchange,提问作者zigma12
相关产品推荐
相关产品推荐

