相关文章推荐
英俊的汤圆  ·  Python+Matplotlib绘制三次B ...·  昨天    · 
聪明的花生  ·  求解报数游戏(约瑟夫环)的六种方法原理与Py ...·  昨天    · 
想发财的打火机  ·  Python实现屏幕滚动截图和拼接长图_董付 ...·  昨天    · 
曾经爱过的皮蛋  ·  Python提取Word文档中的数学公式保存 ...·  昨天    · 
眼睛小的烈马  ·  python django model ...·  12 小时前    · 
聪明伶俐的肉夹馍  ·  ContrstrainLayout的动画之C ...·  1 年前    · 
会搭讪的跑步鞋  ·  OpenResty之ngx.var.VARI ...·  1 年前    · 
很拉风的石榴  ·  【毕业设计之python系列】惠经学校教育论 ...·  1 年前    · 
喝醉的小笼包  ·  报错解决——conda安装torch时,Pa ...·  1 年前    · 
温文尔雅的砖头  ·  再来谈谈浏览器存密码这件事 - 知乎·  2 年前    · 
Code  ›  Python进阶——防止SQL注入多参数开发者社区
pymysql python函数 sql注入 python
https://cloud.tencent.com/developer/article/1957729
个性的拐杖
1 年前
作者头像
落雨
0 篇文章

Python进阶——防止SQL注入多参数

原创
前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 落雨的专栏 > Python进阶——防止SQL注入多参数

Python进阶——防止SQL注入多参数

原创
作者头像
落雨
发布 于 2022-03-17 08:51:39
29.6K 0
发布 于 2022-03-17 08:51:39
举报

概述

预防SQL注入,要使用pymysql 参数化语句。pymysql 的 execute 支持参数化 sql,通过占位符 %s 配合参数就可以实现 sql 注入问题的避免。

这样参数化的方式,让 mysql 通过预处理的方式避免了 sql 注入的存在。

需要注意的是,不要因为参数是其他类型而换掉 %s,pymysql 的占位符并不是 python 的通用占位符。

同时,也不要因为参数是 string 就在 %s 两边加引号,mysql 会自动去处理。

防止多个参数要使用%s,%s,%s来实现

代码实现

# 1. 导包
import pymysql
if __name__ == '__main__':
    # 2. 创建连接对象
    # connect = Connection = Connect 本质上是一个函数,使用这三个里面的任何一个函数都可以创建一个连接对象
    # 1. host : 服务器的主机地址
    # 2. port: mysql数据库的端口号
    # 3. user: 用户名
    # 4. password:密码
    # 5. database: 操作的数据库
    # 6. charset: 操作数据库使用的编码格式
    conn = pymysql.connect(host="localhost",
                           port=3306,
                           user="root",
                           password="mysql123456",
                           database="python",
                           charset="utf8")
    # 3. 获取游标, 目的就是要执行sql语句
    cursor = conn.cursor()
    # 准备sql, 使用防止sql注入的sql语句, %s是sql语句的参数和字符串里面的%s不一样,不要加上引号
    sql = "insert into students(name, age, gender, c_id) values(%s, %s, %s, %s)"
    print(sql)
        # 4. 执行sql语句
        # 1. sql
        # 2. 执行sql语句的传入的参数,参数类型可以是元组,列表,字典
        cursor.execute(sql,["司马懿", 76, '男', 3]);
        conn.commit()
    except Exception as e:
        conn.rollback()
 
推荐文章
英俊的汤圆  ·  Python+Matplotlib绘制三次B样条曲线基函数图像_董付国_消息_控制点
昨天
聪明的花生  ·  求解报数游戏(约瑟夫环)的六种方法原理与Python实现源码_董付国_消息_教材
昨天
想发财的打火机  ·  Python实现屏幕滚动截图和拼接长图_董付国_编程_消息
昨天
曾经爱过的皮蛋  ·  Python提取Word文档中的数学公式保存为PNG图像_董付国_消息_程序
昨天
眼睛小的烈马  ·  python django model 创建用户表_mob649e816a77bf的技术博客_
12 小时前
聪明伶俐的肉夹馍  ·  ContrstrainLayout的动画之ConstraintSet-CSDN博客
1 年前
会搭讪的跑步鞋  ·  OpenResty之ngx.var.VARIABLE - 季末的天堂 - 博客园
1 年前
很拉风的石榴  ·  【毕业设计之python系列】惠经学校教育论坛网站(上)-阿里云开发者社区
1 年前
喝醉的小笼包  ·  报错解决——conda安装torch时,PackagesNotFoundError: The following packages are not available from current_qq63900841977ee的技术博客_51CTO博客
1 年前
温文尔雅的砖头  ·  再来谈谈浏览器存密码这件事 - 知乎
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号