“Lah no migrations?”
Automatic Data Seeding/Migrations
Data Seeding
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.
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:
Dengan automatic data migration, kita cukup menuliskan command
python manage.py makemigrations
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:
- do Makemigrations
2. Then migrate it
Lalu akan ada sebuah file migration seperti ini:
Dan schema pada database akan terbentuk namun masih kosong seperti ini:
3. Last, do this
python3 manage.py loaddata fixture.json