Python pymysql模块基础教程:连接、SQL执行与安全性

0 下载量 63 浏览量 更新于2024-08-31 收藏 66KB PDF 举报
Python的pymysql模块是用于连接MySQL数据库并执行SQL操作的一个流行库。它提供了一种便捷的方式来与MySQL服务器交互,特别适用于Python开发人员在处理数据库查询和管理时的需求。 安装pymysql 首先,要在Python项目中使用pymysql,你需要通过pip安装这个模块,命令如下: ```bash pip install pymysql ``` 基本连接与操作 在使用pymysql时,你需要建立一个连接到MySQL服务器的对象。例如,以下代码创建了一个连接,指定主机(localhost)、数据库(db1)、字符集(utf8mb4),用户名(root)以及游标类型(DictCursor,使结果以字典形式返回): ```python import pymysql conn = pymysql.connect( host="localhost", database="db1", charset="utf8mb4", user="root", cursorclass=pymysql.cursors.DictCursor ) ``` 连接成功后,你可以创建一个游标对象来执行SQL语句: ```python cursor = conn.cursor() sql = "show tables" res = cursor.execute(sql) # 执行SQL并获取受影响的行数 print(res) # 输出结果,如2表示有2个表 rows = cursor.fetchall() # 获取所有查询结果 for row in rows: print(row) cursor.close() # 关闭游标 conn.close() # 关闭数据库连接 ``` 游标和结果读取 游标在pymysql中扮演着关键角色,它是数据查询的迭代器,允许逐条读取查询结果。通过`fetchone()`、`fetchmany()`或`fetchall()`方法可以实现这一点。 预防SQL注入 当编写SQL语句时,务必注意防止SQL注入攻击。pymysql提供了`execute()`方法来确保字符串参数的安全拼接,避免使用`%`或`format()`等方法,因为它们可能导致不安全的字符串插值: ```python sql = "SELECT * FROM t1 WHERE id = %s" # 使用占位符防止注入 id_value = 1 cursor.execute(sql, (id_value,)) ``` 注意事项 - 不要在SQL语句中直接插入表名或数据库名,因为这可能会导致语法错误,pymysql会在内部处理这些名称的插入。 - 在完成数据库操作后,确保关闭游标和连接,以释放系统资源。 pymysql模块为Python开发者提供了一个强大的工具,用于执行各种SQL查询,包括连接、执行、结果获取和安全的SQL构造。了解并掌握如何正确使用游标和预防SQL注入是高效利用这个模块的关键。