【FastAPI后台API 三】 FastAPI SqlAlchemy MySql表迁移

15 篇文章 31 订阅

FastAPI SqlAlchemy MySql表迁移

本系列博客是配合Vue开发一套后台管理系统,对应的Vue教程见个人博客
https://www.charmcode.cn/

FastAPI项目官网是直接使用的SqlAlchemy ORM,不像Flask,一般使用Flask-SqlAlchemy扩展,习惯了flask扩展的,没使用 SqlAlchemy,
虽然大体上很像,但是有些地方还是不一样的。

SqlAlchemy官方本身就是使用alembic实现表迁移的,所以现在直接用这个。

官网 https://alembic.sqlalchemy.org/en/latest/

alembic 初始化

先安装alembic

pip install alembic

然后生成初始化文件, 在项目外一层使用以下初始化命令

alembic init alembic

就会创建一个名为alembic的文件和一个alembic.ini文件
如下所示

alembic/
|____version/            // 一个空的文件夹,保存迁移中间文件                      
|____env.py              // 迁移配置文件 (主要设置文件)
|____script.py.mako                             
|____READEME             // 配置文件                                            
alembic.ini              // alembic 自动生成的迁移配置文件
app/                     // 项目文件夹


配置alembic/env.py文件

如我这个项目,先倒入路径在导入,orm model

import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# print(f"当前路径:{BASE_DIR}")
# /Users/xxxx/python_code/FastAdmin/backend

sys.path.insert(0, BASE_DIR)

from app.api.db.base import Base  # noqa

target_metadata = Base.metadata

配置sqlalchemy.url链接地址

迁移orm model也是需要链接的, 我是先参考FastAPI官方全栈项目生成模版的方式导入

full-stack-fastapi-postgresql Github地址
https://github.com/tiangolo/full-stack-fastapi-postgresql/blob/master/%7B%7Bcookiecutter.project_slug%7D%7D/backend/app/alembic/env.py

def get_url():
    from app.core.config import settings
    return settings.SQLALCHEMY_DATABASE_URL

迁移命令(两步)

先把model 转换成迁移脚本,就会在alembic/version/xxxxxxxx_init_commit.py生成迁移脚本。(修改model文件后第二次迁移,记得修改-m后面的备注信息)

alembic revision --autogenerate -m "init commit"  # 注意修改了orm之后,修改-m后迁移脚本提示

会通过迁移脚本生成表

alembic upgrade head

总结

最基础orm迁移成数据表,功能就完成了,更多细节自定义的功能,可以自行查看官方文档。

代码GitHub地址

见个人博客 https://www.charmcode.cn/article/2020-07-12_FastAPI_SqlAlchemy_mysql_alembic

对于使用 FastAPISQLAlchemy 的应用程序,可以使用 Alembic 工具进行数据库迁移。下面是一些基本步骤: 1. 安装 alembic 库:`pip install alembic` 2. 初始化 Alembic:`alembic init alembic` 这将在项目根目录下创建一个名为 alembic 的文件夹,其中包含 alembic.ini 配置文件和 versions 文件夹。 3. 编辑 alembic.ini 配置文件,指定数据库连接信息,例如: ``` sqlalchemy.url = driver://user:password@localhost/dbname ``` 4. 创建初始数据库迁移脚本:`alembic revision -m "initial migration"` 这将在 versions 文件夹下创建一个名为 `xxxx_initial_migration.py` 的 Python 脚本,其中 `xxxx` 是时间戳。 5. 在该脚本中定义数据库模型和对应的 SQLAlchemy : ``` from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) name = Column(String) email = Column(String, unique=True, index=True) ``` 6. 运行数据库迁移:`alembic upgrade head` 这将创建名为 users 的。 7. 修改模型或添加新模型时,生成新的数据库迁移脚本:`alembic revision -m "description"` 8. 在新脚本中添加相应的修改或新增操作。 9. 运行新的数据库迁移:`alembic upgrade head` 这将应用新的数据库模式。 以上是一个基本的 FastAPISQLAlchemy 数据库迁移流程。当然,具体的情况可能因为项目的具体情况而有所不同,但是以上步骤可以作为一个参考。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值