Automatic Data Seeding/ Migrations

M.Fakhruddin Hafizh
AdHub Team
Published in
2 min readApr 29, 2019

Halo sobat AdHub! Kali ini kita akan membahas mengenai data seeding dan migrations secara umum dan di Django.

Data Seeding

Data seeding merupakan kegiatan mengisi database dengan sebuah data awal. Data seeding sangat bermanfaat ketika kita ingin mengimplementasikan sebuah fitur yang berhubungan dengan database namun kita belum memiliki data pada database. Data seeding biasanya dilakuakan secara atomatis ketika initial setup aplikasi. Data yang digunakan dapat berupa dummy data atau data sesungguhnya seperti initial admin akun.

Implementasi Data Seeding

Misalkan kita ingin mengambil data pengguna yang terdapat pada AdHub maka kita dapat menjalankan command

pyhon manage.py dumpdata iklan > iklan.json

Akan menghasilkan file iklan.json yang bersisi

[{"model": "iklan.iklan", "pk": 1, "fields": {"judul": "iklsn", "platform": 1, "tanggal_mulai": "2019-04-30T06:36:00Z", "tanggal_berakhir": "2019-04-30T06:36:02Z", "deskripsi": "lalalalala", "image": "static/saved_image/Screenshot_from_2019-04-13_21-26-25.png", "link_iklan": "http://a.com", "pemasang_iklan": 1, "nama_usaha": "usaha", "campaign_id": "836243012721", "ad_group_id": "928391246821", "google_ad_id": "123746128461"}}, {"model": "iklan.iklan", "pk": 2, "fields": {"judul": "ad", "platform": 1, "tanggal_mulai": "2019-04-30T06:36:49Z", "tanggal_berakhir": "2019-04-30T06:36:51Z", "deskripsi": "iklan", "image": "static/saved_image/Screenshot_from_2019-04-12_14-25-13.png", "link_iklan": "http://b.com", "pemasang_iklan": 1, "nama_usaha": "nama", "campaign_id": "9328498724", "ad_group_id": "9324823741", "google_ad_id": "9021814217"}}, {"model": "iklan.pembayaran", "pk": 1, "fields": {"status": "Lunas", "total": 4000000, "pemasang_iklan": 1, "bank_pengirim": "BACA", "no_rekening": "9028391312731221", "bukti": "Screenshot_from_2019-04-13_21-26-25.png"}}, {"model": "iklan.pembayaran", "pk": 2, "fields": {"status": "Belum Terkonfirmasi", "total": 1000000, "pemasang_iklan": 1, "bank_pengirim": "BACA", "no_rekening": "9028391312731221", "bukti": "Screenshot_from_2019-04-13_16-50-51.png"}}]

Setelah mendapatkan file iklan.json, apabila suatu ketika database kita ter-flush kita dapat melakukan data seeding dengan menggunakan command

python manage.py loaddata iklan.json

Automisasi Data Seeding

Kita dapat melakukan automisasi data seeding dengan menambahkan perintah berikut pada file CI

# pada gitlab-ci.yml
before_script:
- pip install virtualenv
- virtualenv env
- source env/bin/activate
- pip install -r requirements.txt
- python manage.py makemigrations
- python manage.py migrate
- python manage.py loaddata user_profile.json
- python manage.py collectstatic --no-input

Tambahan perintah pada file docker-compose.yml

command: bash -c "python3 manage.py makemigrations && python3 manage.py migrate && python manage.py loaddata iklan.json &&python3 manage.py collectstatic --no-input && python3 manage.py runserver 0.0.0.0:8000"

--

--