FastAPI与Tortoise-ORM模型配置及aerich迁移工具
title: FastAPI与Tortoise-ORM模型配置及aerich迁移工具


from tortoise.models import Model
from tortoise import fields
class User(Model):
id = fields.IntField(pk=True)
username = fields.CharField(max_length=50, unique=True)
created_at = fields.DatetimeField(auto_now_add=True)
class Meta:
table = "auth_users"
table_description = "系统用户数据表"
schema = "public"
unique_together = (("username", "email"),)
from contextlib import asynccontextmanager
from fastapi import FastAPI
from tortoise import Tortoise
@asynccontextmanager
async def lifespan(app: FastAPI):
await Tortoise.init(
db_url='postgres://user:pass@localhost:5432/mydb',
modules={'models': ['app.models']},
_create_db=True
)
await Tortoise.generate_schemas()
yield
await Tortoise.close_connections()
app = FastAPI(lifespan=lifespan)
pip install aerich
aerich init -t app.config.TORTOISE_ORM
aerich init-db
TORTOISE_ORM = {
"connections": {"default": "postgres://user:pass@localhost:5432/mydb"},
"apps": {
"models": {
"models": ["app.models", "aerich.models"],
"default_connection": "default",
}
},
}
aerich migrate --name add_user_table
aerich show migrations
aerich upgrade
aerich downgrade -v -1
-- upgrade --
CREATE TABLE "auth_users"
(
"id" SERIAL NOT NULL PRIMARY KEY,
"username" VARCHAR(50) NOT NULL UNIQUE,
"created_at" TIMESTAMP NOT NULL
);
COMMENT
ON TABLE "auth_users" IS '系统用户数据表';
-- downgrade --
DROP TABLE "auth_users";
评论
发表评论