你是否遇到这些问题?
- 还在手写 SQL?数据库操作太麻烦?
- Django ORM 用过,但想在 Flask 中也用 ORM?
- SQLAlchemy 怎么连接数据库?如何查询数据?
SQLAlchemy 是 Python 最强大的 ORM 框架,支持 MySQL、PostgreSQL、SQLite、SQL Server 等数据库。本篇文章带你 从入门到实战,彻底掌握 SQLAlchemy!
1. 什么是 SQLAlchemy?为什么要用 ORM?
SQLAlchemy 是 Python 的 ORM(对象关系映射)框架,可以用 Python 代码 直接操作数据库,而 不需要写 SQL。
为什么要用 ORM?
- 数据库操作更 Pythonic(面向对象)
- 兼容多种数据库(MySQL、PostgreSQL、SQLite 等)
- 自动生成 SQL,避免 SQL 注入风险
- 更易维护,代码比 SQL 语句更清晰
传统 SQL 操作(手写 SQL):
SQLAlchemy 操作(ORM 方式):
SQLAlchemy 让数据库操作更清晰、更 Pythonic!
2. 安装 & 配置 SQLAlchemy
(1) 安装 SQLAlchemy
如果使用 MySQL,需要额外安装 MySQL 驱动:
(2) 创建数据库连接
SQLAlchemy 通过 create_engine() 统一管理数据库连接!
3. 创建 ORM 模型(定义数据表)
定义一个 User 表:
ORM 方式定义表结构,避免手写 SQL !
4. CRUD 操作(增删改查)
(1) 创建数据库会话
所有数据库操作都通过 session 进行!
(2) 插入数据(Create)
使用 session.add() 添加新数据,commit() 提交!
(3) 查询数据(Read)
- 查询所有用户
- 按条件查询
- 多条件查询
filter() 方式类似 SQL WHERE 语句!
(4) 更新数据(Update)
直接修改对象属性,再 commit() 保存!
(5) 删除数据(Delete)
使用 session.delete() 删除对象!
5. 进阶操作:一对多 & 多对多
(1) 一对多关系(User → Post)
relationship() 让表之间建立关系,查询时更方便!
(2) 多对多关系(User ↔ Course)
多对多关系通过 secondary 关联表实现!
6. SQLAlchemy vs 直接写 SQL,哪种更好?
方式 | ORM(SQLAlchemy) | 手写 SQL |
代码可读性 | ✅ 高,可维护性好 | ❌ 低,SQL 语句较长 |
数据库兼容性 | ✅ 兼容 MySQL、PostgreSQL、SQLite | ❌ 需改写 SQL 适配不同数据库 |
安全性 | ✅ 避免 SQL 注入 | ❌ 需手动防 SQL 注入 |
性能 | ❌ ORM 有一定性能损耗 | ✅ SQL 执行更快 |
开发效率 | ✅ 高效,操作数据库像操作对象 | ❌ 需要手写 SQL |
- 小型项目、简单查询 → ORM 更方便!
- 复杂查询、大数据量操作 → SQL 更高效!
7. 结语:SQLAlchemy 让 Python 操作数据库更简单!
- ORM 让数据库操作更直观,不用手写 SQL!
- SQLAlchemy 适用于大部分项目,灵活易用,功能强大!