当前位置: 首页 > news >正文

Python PyMySQL【mysql适配器】 简介

幸运转盘


PyMySQL 是一个纯 Python 实现的 MySQL 客户端库,用于在 Python 3.x 中操作 MySQL 数据库(兼容 MySQL 5.5+ 和 MariaDB)。它遵循 Python DB-API 2.0 规范(PEP 249),提供了简洁的 API 与 MySQL 交互,无需依赖 MySQL 官方 C 库。


核心特性

  1. 纯 Python 实现
    • 无需编译或外部依赖,跨平台支持(Windows/Linux/macOS)。
  2. 支持 Python 3
    • 兼容 Python 3.6+(官方已停止对 Python 2 的支持)。
  3. 安全连接
    • 支持 SSL 加密通信。
  4. 完整事务支持
    • 提供 ACID 事务操作(commit()/rollback())。
  5. 高效数据操作
    • 支持参数化查询、批量插入、存储过程调用等。
  6. 错误处理
    • 抛出标准 Error 异常(如 IntegrityErrorOperationalError)。

安装方法

pip install pymysql

基础使用示例

1. 连接数据库
import pymysql# 建立数据库连接
connection = pymysql.connect(host='localhost',      # 主机名user='your_username',  # 用户名password='your_pwd',   # 密码database='test_db',    # 数据库名charset='utf8mb4',     # 字符集cursorclass=pymysql.cursors.DictCursor  # 返回字典形式的结果
)
2. 执行 SQL 查询
try:with connection.cursor() as cursor:# 创建表cursor.execute("""CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),email VARCHAR(100))""")# 插入数据(参数化查询防注入)sql = "INSERT INTO users (name, email) VALUES (%s, %s)"cursor.execute(sql, ('Alice', 'alice@example.com'))# 批量插入data = [('Bob', 'bob@test.com'), ('Charlie', 'charlie@abc.org')]cursor.executemany(sql, data)# 提交事务connection.commit()finally:# 关闭连接connection.close()
3. 查询数据
with connection.cursor() as cursor:cursor.execute("SELECT * FROM users WHERE name LIKE %s", ('A%',))results = cursor.fetchall()  # 获取所有记录for row in results:print(row['id'], row['name'], row['email'])# 其他获取方式# row = cursor.fetchone()   # 获取单条记录# rows = cursor.fetchmany(5) # 获取指定数量记录

关键对象

对象说明
Connection代表与数据库的连接,管理事务和游标创建
Cursor执行 SQL 并获取结果。常用类型:Cursor(元组结果)、DictCursor(字典结果)
Error异常基类(如 IntegrityErrorInternalError

事务管理

try:with connection.cursor() as cursor:cursor.execute("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1")cursor.execute("UPDATE accounts SET balance = balance + 100 WHERE user_id = 2")connection.commit()  # 提交事务
except:connection.rollback()  # 出错时回滚raise

安全注意事项

  • 禁止拼接 SQL:使用参数化查询(%s 占位符)防止 SQL 注入:
    # 正确做法(安全)
    cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))# 错误做法(危险!)
    cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
    

常用扩展

  • 连接池:使用 DBUtils + PyMySQL 实现连接池:
    from dbutils.pooled_db import PooledDB
    pool = PooledDB(pymysql, host='localhost', user='root', database='test')
    connection = pool.connection()
    

适用场景

  • Web 后端开发(Django/Flask 的 MySQL 驱动)
  • 数据分析/ETL 管道
  • 自动化脚本操作数据库

📌 提示:若需更高性能(特别是大数据场景),可考虑 C 扩展库 mysqlclient(API 与 PyMySQL 兼容)。

通过 PyMySQL,开发者能快速、安全地在 Python 中操作 MySQL 数据库,平衡了易用性与功能完整性。

相关文章:

  • 异地组网工具
  • C#建立与数据库连接(版本问题的解决方案)踩坑总结
  • python智慧物业管理系统
  • 树莓派5 安装Mysql (Docker + mariadb)方案
  • TensorFlow+CNN垃圾分类深度学习全流程实战教程
  • Camera Sensor接口协议全解析(一)开篇 - 数据管道,成像系统的生命线题】
  • 【Linux驱动开发 ---- 4_驱动开发框架和 API】
  • RK3588调试之旅:adbd服务配置全攻略
  • Android Automotive OS 的发展历程:从概念到智能汽车的核心
  • 靶场(二十五)---小白心得靶场体会---Access
  • 1. halcon基础语言语法
  • 数据结构 二叉树理论、递归理论与快速排序理论 6.19
  • 零基础指南:利用Cpolar内网穿透实现Synology Drive多端笔记同步
  • JVM(6)——详解标记-清除算法
  • 《李沐读论文》系列笔记【更新中】
  • Three.js WebGL2.0深度应用:解锁图形渲染新极限
  • 【图表示例】元素-组合
  • HashMap算法高级应用实战:频率类子数组问题的5种破解模式
  • 【Java并发】线程池
  • 191. 位1的个数
  • 建立新网站要多少钱/会员制营销
  • 平面设计公司名字大全/夫唯seo教程
  • 北京b2c网站制作/一个完整的产品运营方案
  • 网站建设骗子/全国人大常委会
  • 360做网站多少钱一年/网络营销的五个发展阶段
  • 哈尔滨网站制作公司/合肥网络seo