SQLAlchemy 介绍

介绍

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