时间:2021-05-22
使用MySQLdb连接数据库执行sql语句时,有以下几种传递参数的方法。
1.不传递参数
conn = MySQLdb.connect(user="root",passwd="123456",host="192.168.101.23",db="cmdb")orange_id = 98sql = "select * from orange where id=%s" % orange_idcursor = conn.cursor(sql)cursor.execute()2.传递参数
color = "yellow"
sql = "select * from orange where color = %s"
cursor.execute(sql, color)
注意此处的占位符是%s,无论是字符串、数字或者其他类型,都是这个占位符。
另外, %s不能加引号,如'%s', 这是错误的写法。
与第一种写法,有什么区别呢?
两者区别是对变量的解析:
第一种写法,使用百分号%, 是用Python解释器对%s执行相应的替换。这种方法存在漏洞,有些时候不能正常解析,比如包含某些特殊字符,甚至会造成注入攻击的风险。
第二种,变量是作为execute的参数传入的,由MySQLdb的内置方法把变量解释成合适的内容。
一般情况下,建议使用第二种方法,把变量作为参数传递给execute。
3.使用字典dict类型传递参数
sql = "select * from orange where %(color)s, %(weight)s"values = {"color": "yellow", "weight": 30}cursor.execute(sql, values)这种方式,传递的参数对应关系比较清晰。尤其是参数比较多时,使用字典,可以保证传递参数的顺序正确。
补充知识:python自动化之pymysql库使用变量向SQL语句中动态传递参数(sql注入 || 传参策略)
使用python 3连接Mysql实现自动化增删查改库内数据,由于项目原因很多的sql语句过于复杂,导致sql语句内传递的参数过多而且容易变动,导致很多同学不知从何下手动态的传递参数,有的采用比较笨的方法拼接sql,但是工作量太大,而且复杂的语句拼接时很容易出错且不好维护,所以为大家整理了%s占位符的字典传参的用法
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()运行后就能得到所查询的数据了
最后建议大家多看官方的文档或标准教程,这样更有益学习
以上这篇Python MySQLdb 执行sql语句时的参数传递方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
由于考虑到数据库的安全性,不被轻易SQL注入,执行查询语句时,一般不使用直接拼接的语句,而是使用参数传递的方法。然后在使用参数传递的方法中时,发现当使用like
1.SQL注入SQL注入是非常常见的一种网络攻击方式,主要是通过参数来让mysql执行sql语句时进行预期之外的操作。即:因为传入的参数改变SQL的语义,变成了
使用场景:关闭页面弹窗时执行sql语句。其实js里执行sql语句有多种方式。方式一:直接在js代码里调用sql语句,原则上不能使用,因为这将sql直接暴露在客户
复制代码代码如下://////批量执行SQL语句//////SQL语句数组///SQL参数对象数组///publicstaticInt32ExecuteSqls
asp执行带参数的sql语句,需要向sql语句添加参数,可以有效屏蔽SQL注入,源代码如下:复制代码代码如下:varconn=Server.CreateObje