我试着用sqlalchemy
将3个部分连接成一个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')
代替
date("My_Table"."Entry date", '+' || "My_Table"."Durée" || ' year', '-1 day', '-1 day')
最后一个符号+
正确转换为||
(在“My_Table”.“Durée”和“year”之间)
第一个符号+
在SQL语句中保持原样(在'+'和“My_Table”.“Durée”之间)
我不知道为什么。
我试图将字符串字符'+'
更改为其他字符,因为我认为它可能会干扰串联+
,但它不会改变任何东西。
编辑
我尝试使用func.concat('+', cls.duration, ' year')
,但sqlite不理解concat
。
当然我可以使用f弦:
func.date(cls.entry_date, f"""'+ "{cls.duration.name}" year'""", '-1 day')
但我不相信没有更聪明的方式
1条答案
按热度按时间jyztefdp1#
我在github上得到了一个答案。学分归zzzeek
+操作符的行为切换了正在使用的数据类型的种类。如果你有字符串数据类型,它只产生
||
,字符串连接操作符。FixedAsset.duration
似乎是一个整数。你不能将整数连接到字符串,你必须使用`SQL CAST将该整数转换为字符串: