mysql常用类库有哪些_mysql开发必备库整理

来源:这里教程网 时间:2026-02-28 20:41:45 作者:

MySQL 本身是数据库服务,不自带“类库”;所谓“常用类库”,实际指各类编程语言连接、操作 MySQL 的客户端驱动或 ORM 工具。选错库或版本不匹配,轻则报

Connection refused
Unknown charset: utf8mb4
,重则引发 SQL 注入、连接泄漏、时区错乱。

Python:优先用
pymysql
mysql-connector-python

pymysql
纯 Python 实现,安装快、调试方便,兼容性好,适合开发和中小流量场景;
mysql-connector-python
是 Oracle 官方维护,对新协议(如 caching_sha2_password)支持更及时,但默认开启 autocommit=False,容易漏提交。

避免用已停止维护的
MySQLdb
(不支持 Python 3.12+)
若用 SQLAlchemy,后端推荐
pymysql
:连接串写成
mysql+pymysql://user:pass@host/db
注意
pymysql
默认不处理
datetime
的毫秒截断,需显式设
cursorclass=pymysql.cursors.DictCursor
并手动格式化

Node.js:用
mysql2
,别用原始
mysql

mysql
包已多年未更新,不支持 Promise、prepared statement 和
utf8mb4_0900_as_cs
等新 collation;
mysql2
兼容其 API,但默认启用
Promise
接口,性能更好,还支持 SSL 连接和流式查询。

连接池配置必须设
waitForConnections: true
queueLimit: 0
,否则高并发下直接抛
Handshake in progress
执行含中文的 INSERT 时,务必在连接选项中加
charset: 'utf8mb4'
,否则可能存成问号
避免在
connection.query()
中拼接用户输入,哪怕用了
mysql2.format()
,也建议统一走
??
(字段名) +
?
(值)双占位符

Java:
mysql-connector-j
8.x 是唯一选择

Maven 坐标必须用

mysql:mysql-connector-j
(不是旧的
mysql-connector-java
),8.0.33+ 版本才完整支持 TLS 1.3 和
caching_sha2_password
插件。JDBC URL 若漏掉
serverTimezone=UTC
java.time.LocalDateTime
读写会偏移 8 小时。

连接字符串示例:
jdbc:mysql://localhost:3306/db?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
Spring Boot 3.x 要求驱动版本 ≥ 8.0.33,否则启动报
java.lang.NoClassDefFoundError: com/mysql/cj/protocol/Protocol
MyBatis 中若用
<foreach></foreach>
拼 IN 查询,参数超过 1000 项会触发 MySQL 的
max_allowed_packet
截断,得提前拆分
Connection conn = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/test?serverTimezone=UTC",
    "user", "pass"
);
PreparedStatement ps = conn.prepareStatement("SELECT * FROM users WHERE id = ?");
ps.setLong(1, 123L);
ResultSet rs = ps.executeQuery();

真正麻烦的从来不是“用哪个库”,而是字符集、时区、连接生命周期、SQL 模式这四点——它们不报错,但会让数据悄悄变脏。比如

sql_mode=STRICT_TRANS_TABLES
关闭后,
INSERT INTO t(v) VALUES('')
NOT NULL
字段居然能成功。

相关推荐