0

0

mysql PyMySQL是什么_mysql Python驱动库讲解

P粉602998670

P粉602998670

发布时间:2026-01-14 23:39:33

|

260人浏览过

|

来源于php中文网

原创

PyMySQL是纯Python编写的轻量级MySQL驱动,兼容DB-API 2.0,无需编译、跨平台友好,适合受限环境及CI/CD;默认推荐用'127.0.0.1'而非'localhost',需显式设charset='utf8mb4',autocommit=True可避免手动commit,建议搭配DictCursor使用。

mysql pymysql是什么_mysql python驱动库讲解

PyMySQL 是一个纯 Python 编写的 MySQL 客户端驱动库,它完全兼容 Python DB-API 2.0 规范,不需要编译安装(无 C 依赖),开箱即用,特别适合在受限环境(如某些容器、Windows 精简版、或无法安装 mysql-client 开发包的系统)中连接 MySQL。

它不是 MySQL 官方出品(官方推荐的是 mysql-connector-python),但因轻量、稳定、社区活跃,已成为 Python 中最常用的 MySQL 驱动之一,尤其在 Django、Flask、Airflow 等框架中被广泛默认或可选集成。


为什么选 PyMySQL 而不是 mysql-connector-python

这不是“谁更好”,而是“谁更适配你的场景”:

  • PyMySQL 是纯 Python 实现,安装快(pip install PyMySQL)、跨平台零编译问题,对新手和 CI/CD 流水线友好;
  • mysql-connector-python 是 Oracle 官方维护,支持更多企业级特性(如 X Protocol、连接池高级配置),但默认启用 caching_sha2_password 插件 —— 这在 MySQL 8.0+ 上常导致 Authentication plugin 'caching_sha2_password' cannot be loaded 错误,需额外改用户认证方式;
  • 如果你用的是 MySQL 5.7 或 MariaDB,两者行为基本一致;但若用 MySQL 8.0+ 且不想动服务端配置,PyMySQL 通常“连上就跑”,省心;
  • Django 默认支持 PyMySQL,只需在项目入口加两行就能替换原生 MySQLdb(Python 3 已不维护):
import pymysql
pymysql.install_as_MySQLdb()

PyMySQL 连接 MySQL 的最小可行代码

以下是最简连接示例,含必要参数与常见避坑点:

Interior AI
Interior AI

AI室内设计,上传室内照片自动帮你生成多种风格的室内设计图

下载

立即学习Python免费学习笔记(深入)”;

  • hostport:本地 MySQL 默认是 'localhost' + 3306,但注意:'localhost' 在 PyMySQL 中会触发 Unix socket 连接(可能失败),建议统一用 '127.0.0.1'
  • charset 必须显式指定(如 'utf8mb4'),否则中文插入可能乱码或报 Incorrect string value
  • autocommit=False 是默认行为,意味着 INSERT/UPDATE/DELETE 后必须手动调用 conn.commit(),否则事务不生效;
  • 不要省略 cursorclass —— 若想返回字典而非元组,加 cursorclass=pymysql.cursors.DictCursor
import pymysql

conn = pymysql.connect( host='127.0.0.1', port=3306, user='root', password='your_password', database='test_db', charset='utf8mb4', autocommit=True, # 避免忘记 commit cursorclass=pymysql.cursors.DictCursor )

cursor = conn.cursor() cursor.execute("SELECT VERSION()") print(cursor.fetchone()) # {'VERSION()': '8.0.33'}

conn.close()


PyMySQL 常见报错及对应解法

这些错误几乎每个新手都会撞上,原因清晰,修复也直接:

  • ModuleNotFoundError: No module named 'pymysql' → 检查是否在正确 Python 环境下执行 pip install PyMySQL(尤其用 conda 或 virtualenv 时);
  • ConnectionRefusedError: [Errno 111] Connection refused → MySQL 服务没启动,运行 sudo service mysql start(Linux)或检查 Windows 服务里 MySQL80 是否运行;
  • Access denied for user 'root'@'127.0.0.1' → 密码错,或该用户没从 127.0.0.1 登录权限(MySQL 默认 'root'@'localhost' 不等价于 'root'@'127.0.0.1'),需执行:
    CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'xxx'; GRANT ALL ON *.* TO 'root'@'127.0.0.1'; FLUSH PRIVILEGES;
  • OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8A'...") → 表/列字符集不是 utf8mb4,建表语句末尾加 ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

真正容易被忽略的,是连接复用和连接泄漏。PyMySQL 不自带连接池,短生命周期脚本无所谓,但 Web 服务中务必用 pymysqlpoolSQLAlchemy 管理连接,否则并发一高,MySQL 很快报 Too many connections

相关文章

驱动精灵
驱动精灵

驱动精灵基于驱动之家十余年的专业数据积累,驱动支持度高,已经为数亿用户解决了各种电脑驱动问题、系统故障,是目前有效的驱动软件,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

751

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

636

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

758

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1262

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

577

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

706

2023.08.11

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.8万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 792人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号