怪物奇妙物语

宇宙无敌超级美少男的怪物奇妙物语

首页 新随笔 联系 管理
  822 随笔 :: 0 文章 :: 2 评论 :: 16万 阅读

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)
posted on   超级无敌美少男战士  阅读(283)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-02-11 jQuery如何进行二次查找
2022-02-11 如何查看一个网站有没有使用jQuery
2022-02-11 开发依赖 生产依赖 区别
2022-02-11 JavaScript 数组中的常用方法 数组方法
2022-02-11 ngrok 实现内网穿透
2022-02-11 symbol作为key时的获取与遍历
2022-02-11 如何创建两个相同的symbol
点击右上角即可分享
微信分享提示