SQLAlchemy 介绍 作者:马育民 • 2026-08-16 16:06 • 阅读:10001 # 介绍 SQLAlchemy是Python生态中最主流的数据库工具库,核心定位是**数据库抽象层**,主要用来在Python程序里操作关系型数据库,屏蔽不同数据库之间的语法差异,支持MySQL、PostgreSQL、SQLite、Oracle等绝大多数主流数据库。 ### 类比 对于java程序员,相当于 Hibernate 框架 # 组成 它分为两大核心部分:**ORM对象关系映射** 和 **Core核心层(底层SQL抽象)**。 ### 1. Core核心层 - 属于偏底层的组件,对原生SQL做面向对象封装。 - **不用手写完整SQL字符串**,**用Python对象构造查询、条件、表结构**,最终会 **自动翻译成对应数据库的SQL语句** 发送给数据库执行。 ##### 优点 依然贴近SQL逻辑,可控性强,同时避开拼接SQL字符串带来的SQL注入风险;适合需要精细控制SQL的场景。 ### 2. ORM对象关系映射(最常用) - **ORM** 全称Object‑Relational Mapper,对象关系映射。 - 把数据库里的 **表映射成Python类,表的行映射成类的实例对象,字段映射成类的属性**。 - 开发者大部分时候直接操作Python对象,不用写SQL,由框架自动完成对象和数据库记录之间的转换,自动生成增删改查SQL。 # 核心概念 - **模型类**:继承框架基类,**对应数据库一张表**,**类属性对应数据表字段、约束、主键、外键**。 - **Session会话**:ORM的核心工作单元,充当程序和数据库的桥梁。所有对象的 **新增、修改、删除** 先提交到session,最后统一提交事务到数据库,支持回滚。 - **关系映射**:通过配置实现 **表与表之间一对多、多对多关联**,可以直接通过对象属性访问关联数据,**不用手动写join**。 # 主要优势 1. **数据库无关**:业务代码基本不用修改,切换不同数据库,只需要改数据库连接字符串。 2. **防SQL注入**:参数自动处理,避免手动拼接SQL的安全漏洞。 3. **开发效率高**:ORM模式下大量业务不需要手写SQL,专注业务逻辑。 4. **分层可选**:既可以用高层ORM快速开发,也可以降级使用Core层手写SQL逻辑,灵活取舍。 5. **完善事务支持**:原生支持事务提交、回滚,适配复杂业务。 6. **生态成熟**:是Python后端事实标准,FastAPI、Flask等Web框架都有配套扩展。 # 适用场景 适合 **业务系统开发**: - Web 后端业务开发:Flask、FastAPI 等 Web 项目 - 中小型业务系统、管理后台:ERP、CRM、内部 OA、实训管理系统、后台管理平台。 ### 不适合 - 超大规模高并发、海量数据查询:ORM 生成 SQL 不一定最优 - 大量复杂聚合、多表超级大报表:多层子查询、多表大 join、复杂统计分析。更适合直接写原生 SQL 或者存储过程。 - 以数据库存储过程为主的老系统。业务逻辑大量写在数据库存储过程里,ORM 发挥不出优势。 - 简单小脚本,只执行寥寥几条 SQL:杀鸡用牛刀 - 非关系型数据库:不能操作 MongoDB、Redis 等 NoSQL 数据库 # 版本 **SQLAlchemy 2.0** 做了大量API重构,使用理念变化较大,现在新项目优先2.0风格;老项目很多还在使用1.x版本。 # 总结 SQLAlchemy就是Python连接关系数据库的“中间翻译器”,你写Python对象,它帮你搞定数据库SQL 原文出处:/show_1GW3sBZKYjEv.html