ORM是对象关系映射,将数据库表映射为Python类,行转为对象,字段转属性。SQLAlchemy通过Engine连接数据库,Session操作数据,Base定义模型。例如创建User类对应users表,用session.add()插入数据,无需手写SQL。支持多数据库,提升开发效率与维护性,常用于Flask、FastAPI等框架。

SQLAlchemy 是 Python 中一个强大的 ORM(对象关系映射) 库,它让开发者可以用 Python 类和对象的方式来操作数据库,而不必直接写 SQL 语句。简单来说,你可以用面向对象的方式处理数据库中的表和记录。
什么是 ORM?
ORM 的全称是 Object-Relational Mapping(对象关系映射)。它把数据库中的表映射成 Python 类,表的每一行数据对应类的一个实例(对象),字段则对应对象的属性。这样你就可以用 Python 代码来增删改查数据,SQLAlchemy 会自动帮你转换成对应的 SQL 操作。
例如:
如果你有一个用户表 users,传统方式你要写:
立即学习“Python免费学习笔记(深入)”;
INSERT INTO users (name, age) VALUES ('Alice', 25);用 SQLAlchemy,你可以这样写:
自从百度屏蔽淘宝客网站、淘宝抛弃淘宝客之后,个人站长集体陷入了恐慌之中。此时,什么值得买网的异军突起引起了广大个人站长的极大关注。做一个什么值得买一样的导购网站成了众多个人站长的一致心愿! TP-COUPON 导购系统 即是让个人站长实现此心愿的绝佳选择! 欢迎个人站长选用。V1.1版 更新记录:1.修正请求时查询淘宝店铺错误的bug2.删除一些无用的代码
user = User(name='Alice', age=25) session.add(user) session.commit()
看起来更像在操作 Python 对象,而不是数据库。
SQLAlchemy 的核心组件
- Engine:连接数据库的入口,负责管理连接池和与数据库通信。
- Session:用于操作数据库中的数据,比如添加、查询、删除对象。
- Base / declarative_base():所有模型类的基类,用来定义数据表结构。
- Model(模型类):继承 Base 的类,每个类对应一张数据库表。
常见用途和优势
- 减少手写 SQL 的工作量,提高开发效率。
- 代码更易维护,尤其是项目大了以后。
- 支持多种数据库(如 SQLite、MySQL、PostgreSQL 等),切换数据库时改动小。
- 可以灵活地混合使用 ORM 和原生 SQL,适合复杂查询。
一个简单例子
下面是一个使用 SQLAlchemy 创建用户表并插入数据的示例:
from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker创建引擎
engine = create_engine('sqlite:///example.db') Base = declarative_base()
定义模型
class User(Base): tablename = 'users' id = Column(Integer, primary_key=True) name = Column(String(50)) age = Column(Integer)
创建表
Base.metadata.create_all(engine)
创建会话
Session = sessionmaker(bind=engine) session = Session()
添加用户
new_user = User(name='Bob', age=30) session.add(new_user) session.commit()
查询用户
for user in session.query(User).filter_by(name='Bob'): print(user.name, user.age)
基本上就这些。SQLAlchemy 不仅功能强大,还被广泛用于 Flask、FastAPI 等 Web 框架中进行数据库操作。掌握它对做后端开发很有帮助。










