Let’s say kita ingin menambahkan kolom baru pada salah satu table di database flask. Ketika proyek sudah running, tentu saja tidak mungkin kita hapus database nya kemudian jalankan ulang flask nya supaya database dibuat dari awal dan memiliki kolom yang baru. Untuk itu kita perlu yang namanya migrasi database, atau upgrade database ke skema yang baru.
Untuk melakukan hal tersebut di flask kita bisa menggunakan yang namanya alembic. Nah, flask sendiri memiliki sebuah fitur yang akan memudahkan kita untuk menggunakan alembic, yaitu flask-upgrade. Ok, kita mulai saja.
Katakanlah di models.py Anda sudah menambahkan kolom baru di table user. Maka langkah selanjutnya adalah install flask-upgrade.
> pip install Flash-Migrate
Oke sekarang di file python init Anda, atau file tempat Anda mendeklarasikan app = Flask(__name__) Anda modifikasi seperti berikut.
from flask_migrate import Migrate
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///humairapro.db'
db = SQLAlchemy(app)
migrate = Migrate(app,db, render_as_batch=True)
Jalankan perintah ini
> flask --app start db init
start adalah file .py yang berisi inisialisasi app. Jika file anda namanya adalah awal.py maka kata “start” anda ganti menjadi “awal”
Setelah Anda jalankan maka akan folder baru di direktori proyek Anda dengan nama “migrations”
Sekarang jalankan perintah ini di terminal
> flask --app start db migrate -m 'migrasi pertama'
Anda akan melihat di folder migrations akan ada folder lagi dengan nama versions. Dan file dengan nama xxx_migrasi_pertama.py. Ya, itu adalah database versions control yang akan kita pakai untuk upgrade/downgrade database flask kita.
Ok, sekarang tinggal kita push konfigurasi migrasi kita ke database. Dengan mengetikan perintah
> flask --app start db upgrade
Ok, sekarang coba cek database. Dan Anda akan lihat database-nya sudah termodifikasi.
Jika Anda mengalami not null constraint error maka di file versions control nya tambahkan ini
server_default=’nilai default’
pada baris yang digunakan untuk mengubah tablenya