安装fastapi及tortoise-ORM框架
pip install fastapi
pip install "uvicorn[standard]"
pip install tortoise-orm #安装ORM框架
pip install aerich==0.63 #实现数据库的初始化,迁移等工作
使用aerich初始化数据库及迁移
- 应用主目录下创建config.py文件;创建二级目录data及数据模型文件data/models.py:
config.py:
TORTOISE_ORM = {
"connections": {"default": "sqlite://data/db.sqlite3"},
#"connections": {"default": "mysql://数据库账号:数据库密码@IP地址:端口/库名"},
"apps": {
"models": {
"models": ["data.models","aerich.models"],
#"data.models" 是应用的数据模型文件,用于创建应用表
#"aerich.models" 会创建一个aerich表,用于记录数据库迁移信息
"default_connection": "default",
},
},
"routers": [],
"use_tz": False, #建议不开启,不然存储日期有很多坑,时区转换在项目中手动处理更稳妥
"timezone": "Asia/Shanghai"
}
data/models.py:
from tortoise import fields
from tortoise.models import Model
class Whitelist(Model):
ip = fields.CharField(pk=True,max_length=50,null=False,description = "白名单IP")
status = fields.IntField(null=False)
desc = fields.CharField(max_length=255)
begin_time = fields.DatetimeField()
end_time = fields.DatetimeField()
class Meta:
table = "whiltelist" #数据库中表名
- 初始化数据库配置信息
(env)PS D:\app>aerich init -t config.TORTOISE_ORM
Success create migrate location ./migrations
Success write config to pyproject.toml
#在当前目录生成一个文件pyproject.toml(用来保存配置文件路径)和一个文件夹migrations(存放.sql迁移文件)
- 创建迁移数据和生成应用模型结构
(env)PS D:\app>aerich init-db
Success create app migrate location migrations\models
Success generate schema for app "models"
#创建数据库文件data/db.sqlite3,并且创建了whitelist和aerich两张表
#migrations目录下创建models子目录,并存放创建表的sql脚本
4.如果models模型改变,执行以下操作生成迁移数据,然后更新修改到数据库
(env)PS D:\app>aerich migrate --name update_mark
#--name 迁移记录名称(随意命名,方便自己查看即可)
(env)PS D:\app>aerich upgrade #更新修改到数据库