用途:Alembic 是 SQLAlchemy 的数据库迁移工具,用一组由 down_revision 指针串联的版本脚本管理数据库结构版本,形成线性或分支的迁移链。
主要能力:初始化迁移环境;从模型差异自动生成迁移脚本;手动编写升级与回滚逻辑;执行升级、回滚、查看当前版本与历史;在 CI 中检查是否存在未提交的迁移;通过 post_write_hooks 自动格式化生成的脚本。
使用方式:常用命令包括 alembic init alembic、alembic init --template pyproject alembic、alembic init --template async alembic、alembic revision -m "..."、alembic revision --autogenerate -m "..."、alembic upgrade head、alembic downgrade base、alembic current、alembic history --verbose、alembic check。需在 alembic.ini 配置数据库 URL,并在 env.py 中把 target_metadata 指向应用的 Base.metadata 以启用自动生成。建议在 MetaData 上配置命名约定,否则自动生成无法识别匿名约束。
适用场景:使用 SQLAlchemy 的 Python 项目需要管理数据库结构变更、版本回滚或在 CI 中校验迁移完整性时。
限制:自动生成无法检测表重命名、列重命名和匿名命名约束,重命名会被识别为新增加删除;自动生成的脚本必须人工审查;每个版本都应实现 downgrade();不要硬编码生产凭据,应从环境变量读取数据库 URL。