fastapi tortoise-orm 使用三
fastapi是一个很优秀的框架,但是缺少一个合适的orm,官方代码里面使用的是sqlalchemy,Tortoise ORM 是受 Django 启发的易于使用的异步 ORM (对象关系映射器)。
github文档: https://tortoise.github.io/
Tortoise ORM 目前支持以下数据库:
PostgreSQL >= 9.4(使用asyncpg)
SQLite(使用aiosqlite)
MySQL/MariaDB(使用aiomysql或使用asyncmy)
创建模型
以选课系统为例:
models.py
from tortoise.models import Model
from tortoise import fields
class Clas(Model):
name = fields.CharField(max_length=255, description='班级名称')
class Teacher(Model):
id = fields.IntField(pk=True)
name = fields.CharField(max_length=255, description='姓名')
tno = fields.IntField(description='账号')
pwd = fields.CharField(max_length=255, description='密码')
class Student(Model):
id = fields.IntField(pk=True)
sno = fields.IntField(description='学号')
pwd = fields.CharField(max_length=255, description='密码')
name = fields.CharField(max_length=255, description='姓名')
# 一对多
clas = fields.ForeignKeyField('models.Clas', related_name='students')
# 多对多
courses = fields.ManyToManyField('models.Course', related_name='students',description='学生选课表')
class Course(Model):
id = fields.IntField(pk=True)
name = fields.CharField(max_length=255, description='课程名')
teacher = fields.ForeignKeyField('models.Teacher', related_name='courses', description='课程讲师')aerich迁移工具
main.py
settings.py
aerich是一种ORM迁移工具,需要结合tortoise异步orm框架使用。安装aerich
初始化配置,只需要使用一次
初始化完会在当前目录生成一个文件:pyproject.toml和一个文件夹:migrations
pyproject.toml:保存配置文件路径,低版本可能是aerich.ini
migrations:存放迁移文件
初始化数据库,一般情况下只用一次
此时数据库中就有相应的表格
如果TORTOISE_ORM配置文件中的models改了名,则执行这条命令时需要增加--app参数,来指定你修改的名字
更新模型并进行迁移
修改model类,重新生成迁移文件,比如添加一个字段
迁移文件名的格式为 {version_num}{datetime}{name|update}.json。 注意,此时sql并没有执行,数据库中admin表中没有xxx字段
重新执行迁移,写入数据库
回到上一个版本
查看历史迁移记录
7.系统接口开发 api/student.py
Last updated