SQLAlchemy 是 Python 主流 ORM 工具,通过映射数据库表为 Python 类实现面向对象操作;支持 SQLite、MySQL 等数据库连接,需定义模型类、创建表、使用 Session 执行 CRUD 操作。

SQLAlchemy 是 Python 中最主流的 ORM(对象关系映射)工具,它把数据库表映射成 Python 类,用面向对象的方式操作数据,既保留了 SQL 的灵活性,又大幅简化了数据库交互代码。
安装与连接数据库
使用 pip 安装:
pip install sqlalchemy
连接数据库需创建 Engine 实例。以 SQLite 为例(轻量、无需额外服务):
立即学习“Python免费学习笔记(深入)”;
from sqlalchemy import create_engine
engine = create_engine("sqlite:///example.db", echo=True)
• echo=True 表示打印执行的 SQL 语句,方便调试
• 其他数据库如 MySQL、PostgreSQL 只需换 URL:mysql+mysqldb://user:pass@localhost/dbname
定义模型类(映射表结构)
通过继承 Base(来自 sqlalchemy.orm.declarative_base()),用类属性描述字段:
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String(50))
email = Column(String(100))
• __tablename__ 指定对应数据库表名
• Column 支持类型如 Integer、String、Boolean、DateTime 等
• 主键必须显式声明(primary_key=True)
创建表与初始化会话
首次运行时,用 Base.metadata.create_all(engine) 自动建表:
图书《网页制作与PHP语言应用》,由武汉大学出版社于2006出版,该书为普通高等院校网络传播系列教材之一,主要阐述了网页制作的基础知识与实践,以及PHP语言在网络传播中的应用。该书内容涉及:HTML基础知识、PHP的基本语法、PHP程序中的常用函数、数据库软件MySQL的基本操作、网页加密和身份验证、动态生成图像、MySQL与多媒体素材库的建设等。
Base.metadata.create_all(engine)
所有数据库操作都通过 Session 进行:
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
• session 是工作单元,增删改查都在其上下文中完成
• 操作后需调用 session.commit() 提交,或 session.rollback() 回退
• 用完建议 session.close()
增删改查(CRUD)实战
新增记录:
new_user = User(name="张三", email="zhangsan@example.com")
session.add(new_user)
session.commit()
查询记录:
# 查询全部
users = session.query(User).all()
# 条件查询(等价于 WHERE name = '张三')
user = session.query(User).filter(User.name == "张三").first()
# 多条件(AND)
user = session.query(User).filter(User.name == "张三", User.id > 1).first()
更新记录:
user = session.query(User).filter(User.id == 1).first()
if user:
user.email = "new@example.com"
session.commit()
删除记录:
user = session.query(User).filter(User.id == 1).first()
if user:
session.delete(user)
session.commit()
• filter() 接收表达式,支持 ==、!=、>、• first() 返回一个对象或 None;all() 返回列表;one() 要求有且仅有一个结果









