推荐使用FastAPI与Tortoise ORM构建高效Web API的模板

推荐使用FastAPI与Tortoise ORM构建高效Web API的模板

fastapi-tortoiseThe template for building scalable web APIs based on FastAPI, Tortoise ORM and other.项目地址:https://gitcode.com/gh_mirrors/fa/fastapi-tortoise

1、项目介绍

fastapi-tortoise是一个强大的Web API模板,它结合了FastAPI的高性能和Tortoise ORM的数据库操作便利性。这个项目旨在帮助开发者快速搭建优雅且高效的后端服务,无需从零开始。

2、项目技术分析

FastAPI

FastAPI是一个基于Python类型提示的现代化、高性能Web框架,其API设计简洁明了,同时提供了出色的性能和自动化处理能力。FastAPI以其对OpenAPI的支持而闻名,允许自动生成文档,使得接口更易于理解和使用。

Tortoise ORM

Tortoise ORM是轻量级的、异步的ORM库,适用于Python的现代Web开发。它简化了数据库模型的定义和数据操作,让你能够在不牺牲效率的情况下快速开发应用。

3、项目及技术应用场景

  • API开发 - 快速构建RESTful API,特别适合微服务架构。
  • 后台系统 - 为前端提供稳定、高并发的数据支持。
  • 实时数据处理 - 异步特性使Tortoise ORM在大数据处理场景下表现优秀。
  • 敏捷开发 - 开箱即用的功能和可定制化工具,使得项目迭代更快。

4、项目特点

  • Docker支持 - 提供Docker部署配置,方便在各种环境中快速启动服务。
  • 本地开发 - 使用docker-compose进行本地开发,保持与生产环境的一致性。
  • 清晰代码结构 - 遵循最佳实践,代码简洁且可读性强。
  • 预装实用工具 - 包含一些预先配置好的工具,并带有测试,提升开发效率。
  • 高度定制化 - 用户可以根据需求自由裁剪和扩展代码。

现在就动手吧!

  1. 将此仓库克隆到本地 (git clone https://github.com/prostomarkeloff/fastapi-tortoise)
  2. .env.example重命名为.env
  3. 删除不需要的代码(如示例的"hello"路由和相关测试)
  4. 根据你的项目需求进行个性化定制!

让我们一起享受使用fastapi-tortoise带来的高效开发体验吧!

fastapi-tortoiseThe template for building scalable web APIs based on FastAPI, Tortoise ORM and other.项目地址:https://gitcode.com/gh_mirrors/fa/fastapi-tortoise

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用 FastAPITortoise-ORM、SQLAlchemy 和 peewee 进行 ORM 查询的示例。 ## Tortoise-ORM ```python from fastapi import FastAPI from tortoise import fields from tortoise.contrib.fastapi import register_tortoise, HTTPNotFoundError from tortoise.models import Model from tortoise import Tortoise class User(Model): id = fields.IntField(pk=True) name = fields.CharField(50) email = fields.CharField(50) class Meta: table = "users" app = FastAPI() @app.on_event("startup") async def startup(): await Tortoise.init( db_url="sqlite://db.sqlite3", modules={"models": ["main"]} ) await Tortoise.generate_schemas() @app.on_event("shutdown") async def shutdown(): await Tortoise.close_connections() @app.get("/users") async def get_users(): users = await User.all() return users @app.get("/users/{user_id}") async def get_user(user_id: int): user = await User.get_or_none(id=user_id) if user is None: raise HTTPNotFoundError return user register_tortoise( app, db_url="sqlite://db.sqlite3", modules={"models": ["main"]}, generate_schemas=True, add_exception_handlers=True ) ``` ## SQLAlchemy ```python from fastapi import FastAPI from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) name = Column(String(50)) email = Column(String(50)) engine = create_engine("sqlite:///db.sqlite3") SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) app = FastAPI() @app.get("/users") async def get_users(): db = SessionLocal() users = db.query(User).all() db.close() return users @app.get("/users/{user_id}") async def get_user(user_id: int): db = SessionLocal() user = db.query(User).filter(User.id == user_id).first() db.close() if user is None: raise HTTPNotFoundError return user ``` ## peewee ```python from fastapi import FastAPI from peewee import SqliteDatabase, Model, CharField, IntegerField from playhouse.shortcuts import model_to_dict db = SqliteDatabase("db.sqlite3") class User(Model): id = IntegerField(primary_key=True) name = CharField() email = CharField() class Meta: database = db table_name = "users" app = FastAPI() @app.on_event("startup") def startup(): db.connect() db.create_tables([User]) @app.on_event("shutdown") def shutdown(): db.close() @app.get("/users") async def get_users(): users = [model_to_dict(user) for user in User.select()] return users @app.get("/users/{user_id}") async def get_user(user_id: int): user = User.get_or_none(User.id == user_id) if user is None: raise HTTPNotFoundError return model_to_dict(user) ``` 注意:以上示例中的代码仅用于演示 ORM 查询的基本用法,并且没有进行错误处理。在实际应用中,你应该根据需要添加适当的错误处理和安全性检查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姚婕妹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值