- 踩坑场景:
拼接原生sql在where条件中使用了in条件
当ids只有一个元素的时候就会出现拼接错误的情况# 预计sql select * from a where id in (1,2,3,4) ids = tuple([data_list]) sql = f"select * from a where id in {ids}" >>> select * from a where id in (1,) - 问题原因: 这是因为python为了区分元组和括号,如果没有这个","那么(1)就会产生歧义,无法判断是元组中有一个元素为1还是括号运算符中有一个1。所以只有一个元素的元组会在元素的后面加一个","进行区分。
- 知识回忆:
- tuple是不可变类型
- tuple中的元素在定义后就无法修改
- 删除tuple可以使用del tuple_name删除整个tuple