Study
Flask

Flask-SQLAlchemy: Model & Migrasi

Penjelasan

Flask sendiri tidak punya ORM bawaan (beda dengan Django yang sudah include). Extension resmi Flask-SQLAlchemy menambahkan ORM SQLAlchemy ke Flask dengan integrasi yang rapi. Kamu mendefinisikan tabel sebagai class Python yang mewarisi db.Model, dengan setiap atribut class merepresentasikan kolom lewat db.Column(). Untuk mengelola perubahan skema database seiring waktu (menambah kolom, dsb), dipakai extension tambahan Flask-Migrate (berbasis Alembic) — mirip 'migration' di Laravel atau Django, tapi harus di-install terpisah karena filosofi Flask yang unopinionated.

Contoh Konsep

# pip install flask-sqlalchemy flask-migrate
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///toko.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)

class Produk(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    nama = db.Column(db.String(100), nullable=False)
    harga = db.Column(db.Float, nullable=False)

# Terminal:
# flask db init
# flask db migrate -m "buat tabel produk"
# flask db upgrade

Praktikum

Lengkapi definisi model Kategori dengan kolom id (primary key) dan nama (string, wajib diisi).

Editor Latihan

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

Tips

Selalu jalankan flask db migrate setelah mengubah struktur model, dan review file migrasi yang dihasilkan sebelum flask db upgrade — Alembic kadang salah menebak perubahan kompleks seperti rename kolom.