精彩文章免费看

pymysql 动态传表名和key,用占位符的坑

pymysql占位符的用法

sql="update table set key=%s"
cursor.execute(sql, value)

如果只需要传值的话,这样是没问题的
但是也想要传表名或者key的话
按照定向思维,我是这么写的

sql="update %s set %s=%s"
temp=(table, key, value)
cursor.execute(sql, temp)

但发现这样一直没有执行sql
后来查资料发现,用占位符传值这种形式,会自动带上单引号'
如果是只需要传值,那么这里的sql是正常的

update table set key="value"

但如果是表名和key,sql会变成这样

sql="update "table" set "key"="value"

这样的话,是执行不了的

提前把表名和key拼接好

sql="update" + table + " set " + key + "=%s"
cursor.execute(sql, value)