用途
本技能面向使用 Python 进行数据库开发的场景,讲解 SQLAlchemy Python SQL 工具包与 ORM 的现代用法。根据原文,适用时机包括:构建带数据库的 Python 应用、需要类型安全的复杂 SQL 查询、使用 FastAPI/Flask/Django 框架,以及需要进行数据库迁移(Alembic)时。
主要能力
声明式模型
使用 DeclarativeBase、Mapped[T] 和 mapped_column() 定义带类型提示的模型,支持主键、必填字段、可选字段、带服务器默认值的时间戳以及关系定义。
关系映射
支持一对多关系(通过 relationship 与 back_populates)和多对多关系(通过关联表 Table 与 secondary 参数)。
数据库设置
提供引擎创建(create_engine)与会话工厂(sessionmaker)配置,包含连接池参数(poolclass、pool_size、max_overflow、pool_pre_ping、echo),以及 SQLite、PostgreSQL、MySQL 的数据库 URL 格式说明。文档还给出 FastAPI 依赖注入模式的 get_db 生成器。
查询模式(SQLAlchemy 2.0)
使用 select() 进行查询,支持 and_、or_ 条件、like、排序(desc)、limit、offset、计数(func.count)。连接查询涵盖内连接、左外连接、多次连接。预加载通过 selectinload、joinedload 解决 N+1 问题,并支持嵌套预加载与 load_only 仅加载指定列。
CRUD 操作
创建(add、add_all 批量插入、commit、refresh)、读取(scalar_one_or_none、分页)、更新(属性赋值与批量 update 语句)、删除(delete 与批量 delete 语句)。
事务与会话管理
上下文管理器模式(成功提交、异常回滚、最终关闭)以及手动事务控制(begin_nested、with_for_update)。
异步 SQLAlchemy
使用 create_async_engine、AsyncSession、async_sessionmaker 进行异步设置与 CRUD 操作,并给出 FastAPI 异步依赖示例。
Alembic 迁移
包含初始化(alembic init)、配置 env.py、自动生成迁移(alembic revision --autogenerate)、应用迁移(alembic upgrade head)、回滚(alembic downgrade -1)、查看当前版本与历史,以及手动迁移示例。
FastAPI 集成
提供完整的 FastAPI 示例,包括 Pydantic 模型(from_attributes)、创建、读取、列表、更新端点。
使用方式
原文给出快速开始步骤:
pip install sqlalchemy- 使用声明式基类定义模型
- 创建引擎与会话
- 使用
select()查询并commit()提交
安装命令还包括:
- 异步支持:
pip install sqlalchemy[asyncio] aiosqlite(SQLite)、pip install sqlalchemy[asyncio] asyncpg(PostgreSQL) - 迁移:
pip install alembic - FastAPI 集成:
pip install fastapi sqlalchemy
适用场景与限制
适用于需要 ORM 与数据库迁移的 Python 项目,尤其是使用 FastAPI 的 Web 应用。原文标注了 token 估算:入口 70-85,完整 4500-5500。关于具体版本兼容性、性能基准、收费与价格等事实,资料中暂未提供。