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.
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.