Easier FastAPI and Tortoise setup
ms_core.setup_app
function configures TortoiseORM to work with
FastAPI, registers Tortoise models, includes fastapi.APIRouter
s to the provided
FastAPI instance and returns TortoiseORM config dict. Doing these action separately is possible by using
ms_core.setup.conf_db
and ms_core.setup.include_routers
Folder layout
This tutorial implies specific folder layout. Following example have main.py
and app
directory
in their root. app
directory contains routers
and models.py
Create a model
Create a file named models.py
in the app
directory. Inside the file place model named User
from tortoise import Model
from tortoise import fields
class User(Model):
id = fields.IntField(primary_key=True)
name = fields.CharField(max_length=32)
created_at = fields.DatetimeField(auto_now_add=True)
class Meta:
table = "users"
Create a router
Create routers
in app
directory. Inside it place users.py
with a router and some route:
from fastapi import APIRouter
from app.models import User
router = APIRouter(prefix="/users/", tags=["users"])
@router.get("/{id_}")
async def get_by_id(id_: int):
return await User.get_or_none(id=id_)
Setup app
Create a file named main.py
in the root directory with:
from pathlib import Path
import uvicorn
from fastapi import FastAPI
from ms_core import setup_app
application = FastAPI()
setup_app(
application,
"sqlite:///:memory:",
Path("app") / "routers",
["app.models"] # module path to a file containing models
)
if __name__ == "__main__":
uvicorn.run("main:application", port=8000, reload=True)