fastapi: 用alembic实现数据库迁移

一,安装用到的第三方库,并初始化

$ pip install alembic

 

初始化,注意指定异步模板:

alembic init -t async alembic

因为我们使用的是异步驱动(aiomysql),初始化时必须指定 async 异步模板
执行后,项目根目录下会多出 alembic.ini 配置文件和一个 alembic/ 文件夹。

如下:

$ ls
alembic  alembic.ini 

 

二,配置alembic

1, 配置数据库url:

找到下面一行:

$ grep url alembic.ini 
sqlalchemy.url = driver://user:pass@localhost/dbname

配置为你的数据库地址:

$ grep url alembic.ini 
# sqlalchemy.url = driver://user:pass@localhost/dbname
sqlalchemy.url = mysql+aiomysql://root:rootpassword@localhost:3306/media_bank

2,配置basemodel

Alembic 需要通过它来捕获你写好的模型结构。

找到 target_metadata = None 并将其修改,同时确保引入你定义模型的 Base:

from app.models.mybasemodel import MyBaseModel

target_metadata = MyBaseModel.metadata

3, 注意:

models目录下的__init__.py中要导入一下具体的模型文件

三,测试效果:

检测要处理的model类,转换为sql文件

$ alembic revision --autogenerate -m "create user table3"
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.plugins] setting up autogenerate plugin alembic.autogenerate.schemas
INFO  [alembic.runtime.plugins] setting up autogenerate plugin alembic.autogenerate.tables
INFO  [alembic.runtime.plugins] setting up autogenerate plugin alembic.autogenerate.types
INFO  [alembic.runtime.plugins] setting up autogenerate plugin alembic.autogenerate.constraints
INFO  [alembic.runtime.plugins] setting up autogenerate plugin alembic.autogenerate.defaults
INFO  [alembic.runtime.plugins] setting up autogenerate plugin alembic.autogenerate.comments
INFO  [alembic.autogenerate.compare.tables] Detected added table 'products'
INFO  [alembic.autogenerate.compare.tables] Detected added table 'users'
  Generating /data/python/fastapi/demo1/alembic/versions/5e75b031defe_create_user_table3.py ...  done

执行sql,写入到数据表中

$ alembic upgrade head
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade 5aba779b0b50 -> 5e75b031defe, create user table3

 

posted @ 2026-06-25 16:28  刘宏缔的架构森林  阅读(6)  评论(0)    收藏  举报