一、对于不同类型的入参,有不同的占位符,但是用多了会发现,%s才是真理
二、sql拼接可以用%s,也可以用format,如果不考虑sql注入风险问题,个人建议使用format,可以接受dict为入参进行匹配。
三、在考虑sql注入风险的情况下,可以将拼接好的sql跟入参分开,调用cur.execute(sql, params)来规避sql注入风险。
需要注意的是,这里有两种使用方式,建议使用第二种:
1、采用sql拼接的方式,拼接时用 xx= %s的方式,入参格式为元组或者list
如下举例:
sql = "select count(*) as sys_num from test where true "
params = []
if param1:
sql += " and param1 = %s "
params.append(param1)
if param2:
sql += " and (param2=%s) "
params.append(param2)
cur.execute(sql, params)
2、采用sql拼接的方式,拼接时用 xx=%(xx)s的方式, 入参格式为dict
如下举例:
<