Data Seeding/ Migration
Artikel ini akan membahas data seeding. Pembahasan tersebut akan dibagi menjadi dua bagian, yaitu:
- Data Seeding
- Implementasi Data Seeding pada Django
1. Data Seeding
Data seeding adalah suatu mekanisme untuk menambahkan data awal ke dalam database sebelum aplikasi digunakan. Data yang digunakan ketika seeding sangat berguna untuk proses development pengerjaan proyek aplikasi. Tidak lupa database harus terbentuk terlebih dahulu sebelum melakukan data seeding.
Lalu kapan harus mulai melakukan Data Seeding ?
Ketika membuat suatu aplikasi, pasti perlu melakukan input data dengan initial data yang nantinya akan digunakan untuk development, demo purposes, proof of concept, dan lain-lain. Tentu semakin besar suatu proyek juga akan menyebabkan jumlah data yang semakin banyak pula, maka dari itu data seeding sangat bermanfaat jika perubahan-perubahan besar terjadi pada database sehingga kita tidak perlu memasukkan data satu per satu dari awal karena kita sudah punya data copy yang siap di seeding.
2. Implementasi Data Seeding pada Django
Dalam proyek kelompok, data seeding dilakukan pada backend aplikasi karena berurusan dengan model dan database.
Model dan Migration
Berikut adalah model Activity di aplikasi content
kelompok kami yang berada pada models.py
python manage.py makemigrations
(untuk membuat migrations dari model bersangkutan menjadi perintah SQL )python manage.py migrate
(menjalankan migrations dan mengkesekusi perintah SQL dari hasil migrations)
Seeding Database (Json)
Selanjutnya, untuk melihat bentuk dari SQL pada model Lembaga yang sudah di migrate
tadi dapat menggunakan python manage.py dbshell
dan akan terlihat seperti
SQLite version 3.31.1 2021-05-24 12:55:54
Enter ".help" for usage hints.
sqlite>
Untuk melihat table, jalankan dengan perintah .table
, kurang lebih data akan terlihat seperti di bawah ini.
sqlite> .table
auth_group
auth_group_permissions
auth_permission
authentication_profile
authentication_user
authentication_user_groups
.
.
.
content
Kita tertarik dengan table content_activity
dan untuk melihat schema SQL-nya, kita dapat menjalankan ankan perintah .schema --indent content_activity
sqlite> .schema --indent content_activity
CREATE TABLE IF NOT EXISTS "content_activity"(
"id_activity" varchar(40) NOT NULL PRIMARY KEY UNIQUE,
"name_activity" varchar(100) NOT NULL,
"category" varchar(30) NOT NULL
"for_age" varchar(30) NOT NULL);
Terlihat bahwa ada 4 atribut yang disajikan pada model Lembaga, yaitu id_activity, name_activity, category, for_age.
Dummy Data
Setelah kita tahu bentuk dari SQL dari model Activity, langkah selanjutnya adalah seeding data. Data yang akan digunakan berformat json
. Data ini hanya merupakan dummy dan hanya digunakan pada lingkungan development.
Pada model Activity keempat atribut tersebut akan dibuat data dummy sebagai berikut :
Nama file : activity.json
[
{
"model": "content.activity",
"fields": {
"id_activity": "AT1",
"name_activity": "Menyusun Balok",
"category" : "Motorik",
"for_age" : "18 Bulan" },
{
"model": "content.activity",
"fields": {
"id_activity": "AT2",
"name_activity": "Bermain dengan boneka",
"category" : "Sosial",
"for_age" : "18 Bulan" }
}]
Setelah file activity.json
disimpan, jalankan perintah
python manage.py loaddata activity.json
untuk seeding data ke dalam database. Jika format benar, maka hasilnya akan seperti di bawah ini
$ python manage.py loaddata activity.json
Installed 2 object(s) from 1 fixture(s)
Setelah berhasil data bisa di cek pada Django admin dashboard untuk melihat data yang sudah masuk ke dalam database.
Seeding dengan Automatic Population Script
Kali ini kita akan melakukan seeding dengan jumlah data lebih banyak, karena menggunakan json diatas kurang efisien, maka kita akan menggunakan Automatic Population Script yang merupakan script python untuk men-generate data-data dari models yang sudah didefinisikan.
Asumsi saya sudah memiliki models Activity dengan atribut terbaru (pembaharuan models). Misalkan nama automatic seeder script yang akan digunakan bernama seeder_dev.py.
Jika sudah jadi maka langkah selanjutnya melakukan seeding dengan menjalankan perintah
python seeder_dev.py
Setelah itu bisa dicek dengan Django-Admin untuk memastikan data sudah masuk ke database.
Sekian mengenai artikel Data Seeding/Migration, semoga bermanfaat.