Study
FastAPI

Database dengan SQLAlchemy

Penjelasan

FastAPI tidak punya ORM bawaan seperti Django — pola umum adalah memasangkannya dengan SQLAlchemy. Session database biasanya dibuat lewat dependency get_db() yang di-inject ke tiap endpoint via Depends(), memastikan session ditutup otomatis setelah request selesai.

Contoh Konsep

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, Session

engine = create_engine('sqlite:///./catatan.db')
SessionLocal = sessionmaker(bind=engine)

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

@app.get('/catatan')
def list_catatan(db: Session = Depends(get_db)):
    return db.query(CatatanModel).all()

Praktikum

Buat dependency get_db() yang yield session SQLAlchemy dan menutupnya di blok finally, lalu pakai di endpoint list_catatan.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Pola yield di dependency (bukan return) penting — FastAPI menjalankan kode setelah yield (db.close()) setelah response dikirim, memastikan koneksi selalu ditutup meski terjadi exception di tengah request.