基于FastApi框架测试平台(4)-Alembic实现数据迁移

1,595 阅读1分钟

安装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表