Proses migration bertujuan untuk menghubungkan perubahan pada django project atau app kedalam database. Termasuk didalamnya menambahkan model baru, perubahan models.
Terdapat tiga perintah migrate yaitu: makemigrations, migrate dan sqlmigrate.
makemigrations
Dijalankan menggunakan perintah python manage.py makemigrations nama_app
Perintah diatas akan membuat code yang diperlukan untuk perubahan kedalam database. Namun belum dijalankan.
Sidenote: default application dari Django (seperti Admin, Auth) sudah tersedia SQL makemigrations code, jika kita ingin menggunakannya, kita perlu jalankan code tersebut agar perubahan terjadi pada database.
Ketika perintah makemigrations dijalankan, files migration akan dibuat pada folder aplikasi, contoh dibawah menggunakan nama aplikasi app:
app
|- migrations
|- 0001_initial.py
migrate
Dijalankan menggunakan perintah python manage.py migrate
Perintah diatas akan menjalankan file migrations yang telah dibuat melalui perintah makemigrations diatas.
sqlmigrate
Dijalankan menggunakan perintah python manage.py sqlmigrate nama_app 0001
sqlmigrate memerlukan option nama aplikasi dan batch file migration mana yang akan digunakan.
Perintah sqlmigrate tidak akan melakukan perubahan kedalam database, namun akan menampilkan perintah SQL yang akan digunakan untuk proses migrasi.
Perintah ini cocok digunakan jika Anda ingin melakukan debuging atau membuat database secara manual yang dilakukan oleh DBA.
Proses sqlmigrate tidak akan dibahas pada tutorial ini. Tutorial hanya akan membahas proses migrate dan makemigrations saja.
Proses Migrations
Langkah-langkah untuk melakukan migrations adalah
- Initial project migrate. Proses migrate awal untuk file migrasi yang telah dibuat oleh django, termasuk membuat database.
- Membuat app dan models.
- Registrasikan app pada variable INSTALLED_APPS pada settings.py.
- Jalankan makemigrations untuk app dan model yang telah dibuat.
- Jalankan migrate untuk file migrations baru yang telah dibuat.
Melakukan Migration Untuk Models Patient
Setelah sekilash mengentai teori migration diatas, kita akan melakukan poses migrasi untuk models patient yang telah kita buat pada modul sebelumnya.
Buka file aplikasi boffice\apps.py, copy nama class BofficeConfig.
from django.apps import AppConfig
class BofficeConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'boffice'
Kemudian buka file my_site\settings.py, tambahkan nama class diatas kedalam INSTALLED_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'boffice.apps.BofficeConfig'
]
Pada command prompt jalankan perintah
$ python manage.py makemigrations boffice
Jika berhasil akan ditampilkan log
Migrations for 'boffice':
boffice\migrations\0001_initial.py
- Create model Patient
Anda dapat lihat file baru telah dibuat yaitu boffice\migrations\0001_initial.py, dimana isinya adalah perintah python yang akan digunakan oleh perintah migrate untuk membuat table.
Langkah selanjutnya adalah jalankan perintah migrate
$ python manage.py migrate
Akan tampil log seperti berikut
Operations to perform:
Apply all migrations: admin, auth, boffice, contenttypes, sessions
Running migrations:
Applying boffice.0001_initial... OK
Sampai disini kita sudah berhasil melakukan proses migrasi untuk model yang telah kita buat.
Pada modul selanjutnya kita akan membahas interaksi dengan model yang telah dibuat.