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)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。