1. 安装 aiomysql
和 tortoise-orm
在终端中运行以下命令以安装所需的依赖项:
pip install aiomysql tortoise-orm
2. 配置 Tortoise-ORM
在您的项目中,您需要配置 Tortoise-ORM 的初始化。以下是集成步骤:
创建 config/tortoise.py
文件
新建一个文件来存放 Tortoise-ORM 的配置,例如:
csharp
from tortoise import Tortoise
TORTOISE_ORM = {
"connections": {
"default": "mysql://username:password@localhost:3306/your_database"
},
"apps": {
"models": {
"models": ["model.model", "aerich.models"], # 添加 aerich 的模型
"default_connection": "default",
},
},
}
async def init_tortoise():
await Tortoise.init(
config=TORTOISE_ORM
)
# 如果需要自动生成表结构,可以调用 generate_schemas
await Tortoise.generate_schemas()
async def close_db():
await Tortoise.close_connections()
创建 models
文件夹和模型文件
在项目根目录下创建 models
文件夹,并在其中定义您的数据库模型。例如:
ini
from tortoise.models import Model
from tortoise import fields
class Admin(Model):
id = fields.IntField(pk=True,generated=True,auto_increment=True)
username = fields.IntField(max_length=25,description="用户名")
password = fields.CharField(max_length=32, description="密码")
mobile = fields.CharField(max_length=11, description="手机号")
avatar = fields.CharField(max_length=150, description="头像",null=True)
nickname = fields.CharField(max_length=25, description="昵称",null=True)
ctime = fields.DatetimeField(auto_now_add=True, description="创建时间",null=True)
utime = fields.DatetimeField(auto_now_add=True, description="更新时间",null=True)
class Meta:
table = "jm_admin"
indexes = ["username","mobile"]
unique_together = (("username", "mobile"),)
ordering = ["-id"]
在 main.py
中集成 Tortoise-ORM
python
from fastapi import FastAPI
from router.api import api
from config.mysql import init_tortoise,close_db
from contextlib import asynccontextmanager
# 定义 lifespan 上下文管理器
@asynccontextmanager
async def lifespan(app: FastAPI):
# 启动时执行的逻辑
await init_tortoise()
print("MySQL database registered.")
yield # 应用运行中
# 关闭时执行的逻辑
await close_db()
print("MySQL connection closed.")
app = FastAPI(
debug=True,
title="九猫科技",
version="0.0.1",
description="九猫科技后台管理系统",
lifespan=lifespan
)
app.include_router(api)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app="main:app", host="127.0.0.1", port=8000,reload=True)
3. 安装Aerich迁移工具
Aerich是用于TortoiseORM的数据库迁移工具,通过这个工具可以根据模型类来对数据库做出改变
pip install aerich tomlkit
运行 Aerich 初始化命令
arduino
aerich init -t config.mysql.TORTOISE_ORM
运行以下命令以初始化迁移目录:
csharp
aerich init-db
验证 Aerich 是否正常工作
如果上述步骤成功,您可以使用以下命令创建迁移文件并应用迁移:
-
创建迁移文件:
aerich migrate
-
应用迁移:
aerich upgrade
-
执行回退 如果想回退到执行之前可以执行回退操作
aerich downgrade
更新模型
- 进行追踪并生产迁移文件
bash
# 直接进行追踪
aerich migrate
# 进行追踪并指定生成的迁移文件的部分命名
aerich migrate --name drop_column
- 执行改变
上面的migrate只是追踪模型类有什么变化,然后生成一个迁移文件,但这时候具体的改变还没有应用到数据库
注意: 执行下面的命令必须已经完成初始化配置信息和初始化数据库 。
执行命令来将变化应用到数据库当中:
aerich upgrade
数据库表映射成模型类
有时数据库表是已经创建好了的,需要将其转为模型类,再通过ORM去操作数据库。aerich也有相对应的命令来帮助我们将数据库表映射成模型类
注意: 执行下面的命令必须已经完成初始化配置信息和初始化数据库。
执行命令以映射:
bash
# 映射所有的表并输出到控制台
aerich --app models inspectdb
# 指定一个表进行映射
aerich inspectdb -t user
# 映射所有表并将内容输出到文件当中(通常不会将映射内容直接输出到控制台)
aerich --app models inspectdb > models.py