“Lah no migrations?”

Hadlina Rahmadinni
PPL cewe semua!
Published in
4 min readApr 29, 2019

Automatic Data Seeding/Migrations

Data Seeding

src: https://www.therebels.com/resources/how-to-plant-grass-seed

Iyak jadi Data Seeding disini yang dimaksud bukan bercocok tanam. Tapi bisa dibilang penanaman data ke sebuah database yang tadinya kosong. Cara pengisiannya bisa dilakukan dengan otomatis, bahkan ada juga yang ga harus lagi nulis command apapun. Biasanya seeding ini dilakukan diawal database dibuat.

Data dummy ini dibuat biasanya untuk kepentingan testing. File yang dibuat berbentuk JSON atau YAML. Contoh data dummy biasanya user admin atau clients atau data-data yang setidaknya harus ada ketika si aplikasinya dijalankan.

file yang dibuat ketika melakukan seeding dalam bentuk JSON. src: https://docs.djangoproject.com/en/2.0/howto/initial-data/
file yang dibuat ketika melakukan seeding dalam bentuk YAML. src: https://docs.djangoproject.com/en/2.0/howto/initial-data/

contohnya ketika seeding users berupa email: ppl@ppl.com.

Kalau email tersebut udah ada, automatic data seed scriptnya sudah bisa men-set data user berupa email. Kalau email belum ada, scriptnya akan membuat user baru. Ketika user tersebut dihapus dan scripnta dire-run, si ppl@ppl.com tadi akan terbentuk sebagai user baru.

Migrations

Dari artinya sendiri, migrasi itu proses perpindahan dari suatu tempat ke tempat lain. Migrasi data diperlukan ketika ada lebih dari satu mesin menjalankan aplikasi yang sama. Kenapa perlu migrasi?? Karena aplikasi yang sama berarti kan butuh definisi data yang sama. Nah, detail-detail setiap table pada database yang sama persis ini biasanya ditulis didalam suatu models. Di Django, udah disediakan automatic data migration.

contoh implementasi di Sumbang.in:

Model dari UserManager yang menghadle data-data tentang user ketika sign up dan sign in.

Dengan automatic data migration, kita cukup menuliskan command

python manage.py makemigrations
Membuat file migrations api

Hal ini dilakukan untuk membuat migrasi baru setelah kita melakukan perubahan pada models.py

Setelah itu migrate dengan command

python manage.py migrate

hal ini dilakukan supaya keadaan yang ada pada database sama dengan keadaan yang ada pada mesin local kita, migrate ini berfungsi menyingkronkan database.

Tapi proses migrasi juga bisa dilakukan secara otomatis menggunakan .gitlab-ci.yml. Berikut potongan code dari CI Sumbang.in:

contoh file migration:

Langkah-langkah melakukan data seeding

pertama sebelum memasukan initial data, kita harus membuat datanya dulu dalam bentuk json seperti ini:

fields yang dibuat pada fixture.json harus sama dengan yang ada pada models.py kita:

Nah, ini cara melakukan data seeding yang ternyata sangat easy peasy lemon squishy:

  1. do Makemigrations

2. Then migrate it

Lalu akan ada sebuah file migration seperti ini:

isi dari file migration untuk model address

Dan schema pada database akan terbentuk namun masih kosong seperti ini:

3. Last, do this

python3 manage.py loaddata fixture.json
tadaaa! initial data sudah terbuat didalam schema database kita

--

--