Prisma With Fastapi
Setup FastAPI and Postgres container by refer to Prisma before moving forward.
- Install dependencies.
pip3 install prisma- Create schema file.
// prisma/schema.prisma
datasource db {
provider = "postgresql"
url = env("DB_URL")
}
generator client {
provider = "prisma-client-py"
recursive_type_depth = 5
}
model User {
id String @id @default(uuid())
name String
}- Define environment variables.
.env
DB_URL="postgresql://artoriax:mypassword@localhost:5432/news_db"- Migrate database
prisma migrate dev --name init- Export a prisma instance
# src/prisma.py
from prisma import Prisma
prisma = Prisma()- Connect to prisma and use this boilerplate to start developing.
# main.py
from contextlib import asynccontextmanager
from fastapi import FastAPI
from src.prisma import prisma
import logging
logger = logging.getLogger("uvicorn.error")
logger.setLevel(logging.DEBUG)
# connect to db during lifecycle of the application
@asynccontextmanager
async def lifespan(app: FastAPI):
await prisma.connect()
logger.debug("Successfully connected to database!")
yield
await prisma.disconnect()
logger.debug("Successfully disconnected from database!")
app = FastAPI(lifespan=lifespan)
@app.get("/")
async def root():
return {"message": "Server is running"}
@app.get("/users")
async def get_users():
users = await prisma.user.find_many()
return {"users": users}- Test your application by running
fastapi dev main.pyAnd you're done. Happy development.
Intellisense might not work, refer to following documentation for queries.