tortoise-orm在fastapi中的使用
"""
Tortoise ORM
"""
from tortoise.contrib.fastapi import register_tortoise
from tortoise.contrib.pydantic import pydantic_model_creator
from tortoise import models, fields
class TortoiseOrm(models.Model):
# 表中的第一个字段,字符串类型,最大长度30个字符
data = fields.CharField(max_length=30)
# 第二个字符,datatime类型,自动添加时间戳,不为空
create_date = fields.DatetimeField(auto_now_add=True, null=True)
class Meta:
table = 'a' # 表的名称
# biao 转成pydantic模型 output openapi 模型名称,
# 这个东西相当于一个过滤器,将表中的字段过滤成合适的pydantic模型
Response = pydantic_model_creator(TortoiseOrm, name="OutPut", exclude=("create_date",))
from fastapi import FastAPI
app = FastAPI(title="TortoiseORM")
register_tortoise(
app,
db_url="sqlite://basic.sqlite3",
modules={"models": ["__main__"]},
add_exception_handlers=True,
)
@app.get("/", response_model=Response)
async def index():
# 第一种自己手动过滤,更加精确,执行效率会高一些,select id,data from a
# return await TortoiseOrm.all().order_by("id").first().values('id', 'data')
# 第二种,直接查询所有的字段,然后通过Response模型过滤,执行效率可能会低一些,但是简单省事select * from a;
return await TortoiseOrm.all().order_by("id").first()
@app.get("/index")
async def index1():
return await TortoiseOrm.all().order_by("id")
if __name__ == '__main__':
import uvicorn
uvicorn.run("__main__:app", reload=True)
标签:__,sqlite,tortoise,fastapi,app,import,pydantic
From: https://www.cnblogs.com/zhuoss/p/17110822.html