使用 MySQL
MySQL 是 Web 中最常用的数据库服务器。SQLite 轻量、可嵌入,不能承受高并发,适合桌面和移动;MySQL 面向服务器,能承受高并发,占用内存远大于 SQLite。MySQL 内部有多种引擎,最常用支持事务的 InnoDB。
1. 安装 MySQL
- 从 MySQL 官网 下载 Community Server 8.x,跨平台,选对应平台安装即可。
- 安装时会提示设置 root 用户口令,务必记住(可暂设为
password)。 - Windows:安装时选择 UTF-8 编码,以便正确处理中文。
- Mac / Linux:编辑配置文件
/etc/my.cnf或/etc/mysql/my.cnf,将默认编码改为 utf8mb4:
[client]
default-character-set = utf8mb4
[mysqld]
default-storage-engine = INNODB
character-set-server = utf8mb4
collation-server = utf8_general_ci
- 重启 MySQL 后,用客户端执行
show variables like '%char%',看到 utf8mb4 即表示编码正确。 - 注意:若 MySQL 版本 < 5.5.3,只能设为 utf8;utf8mb4 支持最新 Unicode(含 emoji),utf8 不能显示 emoji。
2. 用 Docker 启动 MySQL
- 若不想本地安装,可用 Docker 快速启动。
- 先安装 Docker Desktop,再执行(参数见下):
docker run -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 --name mysql-8.4 \
-v ./mysql-data:/var/lib/mysql mysql:8.4 \
--mysql-native-password=ON \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
| 参数 | 含义 |
|---|---|
| -e MYSQL_ROOT_PASSWORD=password | root 口令 |
| -p 3306:3306 | 本机 3306 端口映射 |
| --name mysql-8.4 | 容器名称 |
| -v ./mysql-data:/var/lib/mysql | 数据持久化,避免容器删除后数据丢失 |
| mysql:8.4 | 镜像 |
| --mysql-native-password=ON | 启用明文口令 |
| --character-set-server / collation-server | utf8mb4 字符集与排序规则 |
- 日志中出现
ready for connections表示启动成功。
3. 安装 MySQL 驱动与连接
- MySQL 以独立进程、网络对外服务,Python 需通过驱动连接。
- 官方驱动:
mysql-connector-python。
pip install mysql-connector-python
- 连接与游标:
mysql.connector.connect(...)得到 Connection,conn.cursor()得到 Cursor;操作与 SQLite 类似,符合 DB-API 通用约定。
import mysql.connector
# 将 password 改为你的 root 口令
conn = mysql.connector.connect(user='root', password='password', database='test')
cursor = conn.cursor()
4. 建表、插入与提交事务
- 建表:
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))') - 插入:MySQL 的占位符为
%s(不是?);执行 INSERT 等写操作后必须调用conn.commit()提交事务,否则不会真正写入。
cursor.execute('insert into user (id, name) values (%s, %s)', ['1', 'Michael'])
cursor.rowcount # 1
conn.commit() # 必须提交