python使用alembic实现数据库管理
环境准备
- 安装依赖:
pip install sqlalchemy alembic
- 项目结构
my_project/
├── models.py # 定义数据模型
└── alembic/ # 迁移脚本目录(自动生成)
使用步骤:
1. 初始化Alembic环境
在终端切换到项目目录下,运行以下命令初始化
alembic init alembic
运行后的文件结构:
alembic/
├── versions/ # 存放迁移脚本
├── env.py # 迁移环境配置
└── script.py.mako # 迁移脚本模板
alembic.ini # 主配置文件
models.py
2. 配置数据库连接
修改alembic.ini文件,设置数据库连接,找到sqlalchemy.url进行配置:
# 模板:
sqlalchemy.url = mysql+驱动名称://用户名:密码@主机地址:端口/数据库名?charset=utf8mb4 # 使用mysql示例
3. 定义数据模型
在models.py中编写sqlalchemy模型:
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()class User(Base):__tablename__ = "users"id = Column(Integer, primary_key=True)name = Column(String(50))email = Column(String(100))
4.修改alembic/env.py 引入模型
找到alembic/env.py文件,引入models.py文件,具体修改如下:
修改前:
target_metadata = None
修改后:
from models import Base # 从你的模型文件导入 Base
target_metadata = Base.metadata
5. 生成迁移脚本
- 生成迁移脚本
# 首次使用
alembic revision -m "create users table"
# 非首次使用
alembic revision --autogenerate -m "create users table"
6. 数据库迁移
运行迁移更新数据库:
alembic upgrade head
7. 回滚迁移
回滚到上一个版本:
alembic downgrade -1
指定版本号回滚:
alembic downgrade <version_id>
8.常见命令汇总:
命令 | 作用 |
---|---|
alembic init alembic | 初始化迁移环境 |
alembic revision --autogenerate -m "msg" | 生成自动迁移脚本 |
alembic downgrade -1 | 回滚到上一个版本 |
alembic upgrade head | 应用最新迁移 |
alembic history | 查看迁移历史 |