在用pymysql操作数据库的过程中,给sql语句传参碰到了很多问题,网上传参策略很多,这里推荐两种
单个传参用%s,写起来比较简单:
1
2
3
4
|
field = '-'
sql_talk = "UPDATE cnp.Test set a='' where b='%s'"
cursor.execute(sql_talk % field)
db.commit()
|
多个传参用{0}占位符:
1
2
3
4
5
6
|
field = '-'
a = 'code'
sql_talk = "UPDATE cnp.Test set {0}='' where business_registration_code='{1}'" . format (a,field)
cursor.execute(sql_talk)
db.commit()
|
补充知识:python自动化之pymysql库使用变量向SQL语句中动态传递参数(sql注入 || 传参策略)
使用python 3连接Mysql实现自动化增删查改库内数据,由于项目原因很多的sql语句过于复杂,导致sql语句内传递的参数过多而且容易变动,导致很多同学不知从何下手动态的传递参数,有的采用比较笨的方法拼接sql,但是工作量太大,而且复杂的语句拼接时很容易出错且不好维护,所以为大家整理了%s占位符的字典传参的用法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import pymysql
db = pymysql.connect(host = "119.XX.XX.XX" ,
port = 3306 ,
user = "XXXXXXXX" ,
passwd = "XXXXXXXXXXXXX" ,
db = "XXXXXX" ,
charset = 'utf8' )
# %s 占位符为需要传递的参数,切记不要加''双引号,要不然会报错
sql = "SELECT totalusercount * 1.4 FROM mm_project_uv_outdoor WHERE poiid = %s AND currenttime = %s"
cursor = db.cursor()
# 以下为传递多个参数的用法
cursor.execute(sql,[ 'B00140N5CS' , '2019-04-23' ])
# 传递单个参数时 cursor.execute(sql,'B00140N5CS')
print (cursor.fetchall())
db.close()
|
运行后就能得到所查询的数据了
最后建议大家多看官方的文档或标准教程,这样更有益学习
以上这篇pyMySQL SQL语句传参问题,单个参数或多个参数说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_38322240/article/details/80510542