Python操作MySQL:pymysql模块增删改查实战解析

5 下载量 39 浏览量 更新于2024-08-31 收藏 66KB PDF 举报
"pymysql模块的使用(增删改查)详解" 在Python中与MySQL数据库进行交互时,pymysql模块是一个常用的库,它允许我们编写Python代码来执行SQL命令,实现数据的增删改查操作。下面将详细介绍pymysql的下载、使用以及在执行SQL时需要注意的SQL注入问题。 一、pymysql的下载和使用 1. 安装pymysql 使用Python的包管理工具pip进行安装,命令如下: ``` pip3 install pymysql ``` 2. 使用pymysql连接数据库 要使用pymysql连接MySQL数据库,首先需要配置连接参数,包括主机名(host)、端口号(port)、用户名(user)、密码(password)、数据库名(db)和字符集(charset)。以下是一个连接示例: ```python import pymysql conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', db='db8', charset='utf8') ``` 3. 创建游标 连接数据库后,需要创建游标对象,游标用于执行SQL语句和获取结果: ```python cursor = conn.cursor() ``` 4. 执行SQL语句 使用游标对象的`execute()`方法执行SQL语句。例如,查询username为'mjj'且pwd为'123456'的用户信息: ```python sql = "SELECT * FROM user_info WHERE username='mjj' AND pwd='123456'" cursor.execute(sql) ``` 5. 获取查询结果 执行`execute()`方法后,可以调用`fetchone()`、`fetchall()`等方法获取查询结果。 6. 关闭游标和连接 完成操作后,记得关闭游标和连接以释放资源: ```python cursor.close() conn.close() ``` 二、SQL注入及其防范 在使用字符串拼接构造SQL语句时,如果不小心,可能会导致SQL注入攻击。攻击者可以通过输入特定的数据,使SQL语句的逻辑发生变化,从而获取非授权的信息或执行恶意操作。 1. SQL注入实例 - 用户存在,绕过密码: `mjj'-- 任意字符` 这里的`--`使得后面的条件被注释掉,即使没有正确的密码也能通过验证。 - 用户不存在,绕过用户与密码: `xxx'or1=1-- 任意字符` 这将导致SQL语句的条件总是为真,不需要验证用户名和密码。 2. 解决SQL注入的方法 为了避免SQL注入,应使用参数化查询或预编译语句。在pymysql中,我们可以使用占位符`%s`配合元组传入参数,这样可以确保输入数据被正确地转义: ```python # 避免SQL注入的例子 username = 'mjj' password = '123456' sql = "SELECT * FROM user_info WHERE username=%s AND pwd=%s" cursor.execute(sql, (username, password)) ``` 总结,pymysql模块为Python提供了方便的MySQL数据库操作接口,通过建立连接、创建游标、执行SQL和处理结果,可以轻松地实现数据的增删改查。同时,为了防止SQL注入,应避免直接字符串拼接SQL语句,而是使用参数化查询。