【FastAPI 学习三】 FastAPI SqlAlchemy MySql表迁移

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

Copy
pip install alembic

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

Copy
alembic init alembic

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

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

配置alembic/env.py文件#

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

Copy
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/{{cookiecutter.project_slug}}/backend/app/alembic/env.py

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

迁移命令(两步)#

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

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

会通过迁移脚本生成表

Copy
alembic upgrade head

总结#

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

代码GitHub地址#

https://github.com/CoderCharm/fastapi-mysql-generator

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

posted @   王小右  阅读(2427)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
点击右上角即可分享
微信分享提示
CONTENTS