安装Alembic
pip install alembic
迁移
在fastapi官方文档中,这样介绍迁移
“迁移”是每当您更改 SQLAlchemy 模型的结构、添加新属性等以在数据库中复制这些更改、添加新列、新表等时所需的一组步骤。
初始化项目
进入项目根目录,执行如下命令
alembic init alembic
init后面的alembic是迁移文件夹的名字,可以随便定义,一般默认alembic。
执行成功后,项目目录下会多出alembic文件夹和alembic.ini文件
修改alembic.ini
找到sqlalchemy.url,修改为自己的数据库连接
sqlalchemy.url = mysql+pymysql://root:12345678@127.0.0.1:3306/test_craft
修改env.py
找到target_metadata = None,进行更改
from apps.models import user
target_metadata = user.Base.metadata
生成迁移文件
执行如下命令:
alembic revision --autogenerate -m "test"
执行完成,可以在alembic/versions目录看到对应的py文件
...
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('users',
sa.Column('id', sa.INTEGER(), nullable=False),
sa.Column('username', sa.String(length=16), nullable=True),
sa.Column('password', sa.String(length=32), nullable=True),
sa.Column('created_at', sa.DATETIME(), nullable=False),
sa.Column('updated_at', sa.DATETIME(), nullable=False),
sa.Column('deleted_at', sa.DATETIME(), nullable=True),
sa.Column('last_login_at', sa.DATETIME(), nullable=True),
sa.PrimaryKeyConstraint('id'),
)
...
变更数据库
执行如下命令
alembic upgrade head
执行完成,查看数据库,会发现已经按照上述迁移文件创建成功users表