文章

alembic 使用方法

Alembic 是一个用于管理 SQLAlchemy 数据库迁移的工具。它允许你定义数据库模式的变化,并将这些变化应用到数据库中。以下是一个简单的使用指南:

安装 Alembic

你可以使用 pip 来安装 Alembic:

1
pip install alembic

初始化 Alembic

首先,你需要在你的项目目录中初始化 Alembic。这将创建一个 Alembic 的配置文件和一个迁移脚本目录。

1
alembic init alembic

配置 Alembic

初始化后,alembic 目录下会有一个 alembic.ini 文件和一个 env.py 文件。你需要编辑 alembic.ini 文件以配置数据库连接字符串。

alembic.ini 文件中,找到 sqlalchemy.url 配置项并将其设置为你的数据库连接字符串。例如:

1
sqlalchemy.url = postgresql://user:password@localhost/mydatabase

env.py

导入对应的 models

1
2
3
4
import sqlmodel
from sqlmodel import SQLModel
from app.models.user import *
target_metadata = SQLModel.metadata

script.py.mako

1
2
# 在导入中添加
import sqlmodel

创建初始迁移

创建你的第一个迁移脚本:

1
alembic revision --autogenerate -m "Initial migration"

这个命令将会生成一个新的迁移脚本文件,文件名以时间戳为前缀,并包含 Initial migration 的注释。这个脚本会包含数据库模式的变化(如果你已经定义了 SQLAlchemy 模型)。

应用迁移

要将迁移应用到数据库,使用 upgrade 命令:

1
alembic upgrade head

这将会将数据库升级到最新的版本(head 表示最新的迁移)。

编写手动迁移

有时候你可能需要手动编写迁移脚本。你可以使用以下命令生成一个空的迁移脚本:

1
alembic revision -m "Add new table"

然后你可以在生成的迁移脚本文件中手动编写你的数据库变更。

查看当前版本

要查看当前数据库的迁移版本,可以使用以下命令:

1
alembic current

回滚迁移

如果你需要回滚迁移,可以使用 downgrade 命令:

1
alembic downgrade -1

这将会将数据库回滚到上一个版本。你也可以指定其他的版本号。

示例

假设你有一个简单的 SQLAlchemy 模型:

1
2
3
4
5
6
7
8
9
10
11
12
13
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    name = Column(String)

# 创建数据库连接
engine = create_engine('postgresql://user:password@localhost/mydatabase')
Base.metadata.create_all(engine)

在生成初始迁移后,Alembic 会自动检测 User 表并生成相应的迁移脚本。

结论

Alembic 是一个功能强大且灵活的数据库迁移工具。通过以上步骤,你可以轻松管理数据库模式的变化并将这些变化应用到你的数据库中。你可以根据项目需求灵活使用自动生成迁移和手动编写迁移。

本文由作者按照 CC BY 4.0 进行授权