作为 Python 生态中常用的 ORM 框架,SQLAlchemy 几乎是中大型 Python 项目的'标配'——它能帮你用 Python 类操作 MySQL 数据库,简化数据库操作。
本文针对初学者,从环境搭建→核心概念→CRUD 实战→关系映射,一步步讲清如何用 SQLAlchemy 连接 MySQL。全程代码可复制,旨在帮助读者掌握基础用法。
一、前置准备:环境搭好再开始
在写代码前,必须先搞定 3 件事:安装 MySQL、安装 Python 库、配置连接。
1. 安装 MySQL(推荐使用 Docker)
如果不想折腾 MySQL 的安装(比如 Windows 下的环境变量、权限问题),直接用 Docker 跑 MySQL——1 条命令就能启动:
# 启动 MySQL 8.0 容器(密码设为 root123,端口映射 3306)
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123 mysql:8.0
验证是否启动成功:
docker ps # 看 mysql 容器是否在运行
2. 安装 Python 依赖库
需要两个库:
pymysql:Python 连接 MySQL 的驱动;sqlalchemy:核心 ORM 框架。
用 pip 安装:
pip install pymysql sqlalchemy
3. 测试 MySQL 连接(避免后续踩坑)
先写一段代码,验证能否连接到 MySQL:
from sqlalchemy import create_engine # MySQL 连接字符串格式:mysql+pymysql://用户名:密码@主机:端口/数据库名 # 注意:首次连接需要先在 MySQL 中创建数据库(比如 test_db) engine = create_engine('mysql+pymysql://root:root123@localhost:3306/test_db') # 测试连接(无报错则成功) with engine.connect() as conn: print("连接成功!")
关键说明:
- 连接字符串中的
test_db需要先在 MySQL 中创建(用 Navicat 或命令行CREATE DATABASE test_db;); - 如果用本地 MySQL 而非 Docker,
host填localhost,密码填你安装时设置的密码。
二、SQLAlchemy 核心概念:3 个组件搞定 ORM
SQLAlchemy 的核心是 '用对象封装数据库操作',你需要先理解 3 个关键组件:
1. Engine:数据库连接的'总开关'
- 作用:管理数据库连接池(不用每次操作都新建连接,提升性能);
- 类比:像家里的'总电源开关',控制所有电器的供电。
创建 Engine 的代码:
from sqlalchemy import create_engine # 连接字符串格式:mysql+pymysql://用户名:密码@主机:端口/数据库名 engine = create_engine( 'mysql+pymysql://root:root123@localhost:3306/test_db', echo=True, # 打印执行的 SQL(调试用,上线关闭) pool_size=5, # 连接池大小(默认 5) max_overflow=10 # 超出连接池后的最大连接数(默认 10) )

