1.8 データベースへ反映(DJango 2.2.7) [Django]
少し時間が空きましたが・・。
データベースの作成作業です。流れ的には下記となります。
これは、今後テーブルの内容を変更したい場合も同じ操作となります。
1. データベース反映のスクリプトファイル作成
2. スクリプトファイル実行してデータベースへ反映
1. データベース反映のスクリプトファイル作成方法
1.6で作成したモデルクラスをDJangoが読取って自動で
スクリプトファイルを作ってくれます。(DDLの作成)
Create文を作らなくていいんです。素敵ですね。
コマンド:
python manage.py makemigrations applicantctl
DDLの内容確認したい場合は下記コマンドを実行すると確認出来ます(やらなくてもOK)
コマンド:
python manage.py sqlmigrate applicantctl 0001
コンソールに出ているメッセージを見ればわかるけど、
実際にファイルも出力されているので見ることも出来ます。
(こちらはDDLにはなってないけど)
こんな感じ
2. スクリプトファイル実行してデータベースへ反映
スクリプトが出来たので実際にデータベースへ反映するコマンドを実行します。
コマンド:
python manage.py migrate
※コンソールにはDJango用のDB構築をしていなかったため
そちらも出力されています。
プロジェクトフォルダ直下にdb.sqlite3というファイルがデータベース(SQLite)のファイルです。
中身を除くと下記のような感じでテーブルが作成されています。 (フリーソフト:PupSQLite使用)
テーブル名は、「アプリケーション名」+ '_' + 「テーブル名」という感じで作成されるようです。
データベースの作成作業です。流れ的には下記となります。
これは、今後テーブルの内容を変更したい場合も同じ操作となります。
1. データベース反映のスクリプトファイル作成
2. スクリプトファイル実行してデータベースへ反映
1. データベース反映のスクリプトファイル作成方法
1.6で作成したモデルクラスをDJangoが読取って自動で
スクリプトファイルを作ってくれます。(DDLの作成)
Create文を作らなくていいんです。素敵ですね。
コマンド:
python manage.py makemigrations applicantctl
DDLの内容確認したい場合は下記コマンドを実行すると確認出来ます(やらなくてもOK)
コマンド:
python manage.py sqlmigrate applicantctl 0001
コンソールに出ているメッセージを見ればわかるけど、
実際にファイルも出力されているので見ることも出来ます。
(こちらはDDLにはなってないけど)
こんな感じ
# Generated by Django 2.2.7 on 2019-11-24 10:52 from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='M_Appl_Route', fields=[ ('key_appl_route', models.AutoField(primary_key=True, serialize=False)), ('appl_route_text', models.CharField(max_length=200, verbose_name='応募経路')), ('u_user', models.CharField(max_length=100, verbose_name='更新者')), ('u_date', models.DateTimeField(auto_now=True, verbose_name='更新日時')), ], ), migrations.CreateModel( name='M_Department', fields=[ ('key_index', models.AutoField(primary_key=True, serialize=False)), ('headquarters_text', models.CharField(max_length=100, verbose_name='本部')), ('u_user', models.CharField(max_length=100, verbose_name='更新者')), ('u_date', models.DateTimeField(auto_now=True, verbose_name='更新日時')), ], ), migrations.CreateModel( name='M_Judgment', fields=[ ('key_judgment', models.AutoField(primary_key=True, serialize=False)), ('judgment_text', models.CharField(max_length=100, verbose_name='判定内容')), ('u_user', models.CharField(max_length=100, verbose_name='更新者')), ('u_date', models.DateTimeField(auto_now=True, verbose_name='更新日時')), ], ), migrations.CreateModel( name='M_Work_History', fields=[ ('key_history_kbn', models.AutoField(primary_key=True, serialize=False)), ('work_history_kbn', models.CharField(max_length=100, verbose_name='経歴区分')), ('u_user', models.CharField(max_length=100, verbose_name='更新者')), ('u_date', models.DateTimeField(auto_now=True, verbose_name='更新日時')), ], ), migrations.CreateModel( name='T_Applicant_info', fields=[ ('key_applicant', models.AutoField(primary_key=True, serialize=False)), ('applicant_date', models.DateField(verbose_name='応募日')), ('applicant_no', models.CharField(max_length=20, verbose_name='応募者No')), ('applicant_name_text', models.CharField(max_length=100, verbose_name='応募者名')), ('u_user', models.CharField(max_length=100, verbose_name='更新者')), ('u_date', models.DateTimeField(auto_now=True, verbose_name='更新日時')), ('key_appl_route', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='applicantctl.M_Appl_Route')), ('key_history_kbn', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='applicantctl.M_Work_History', verbose_name='経歴区分')), ], ), migrations.CreateModel( name='T_Judgment', fields=[ ('key_judgment', models.AutoField(primary_key=True, serialize=False)), ('judgment_index', models.IntegerField(choices=[(1, '1'), (2, '2'), (3, '3')], verbose_name='優先順位')), ('u_user', models.CharField(max_length=100, verbose_name='更新者')), ('u_date', models.DateTimeField(auto_now=True, verbose_name='更新日時')), ('judgment', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='applicantctl.M_Judgment', verbose_name='面談実施判定')), ('key_applicant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='applicantctl.T_Applicant_info', verbose_name='応募者情報Key')), ('key_department', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='applicantctl.M_Department', verbose_name='本部')), ], ), ]
2. スクリプトファイル実行してデータベースへ反映
スクリプトが出来たので実際にデータベースへ反映するコマンドを実行します。
コマンド:
python manage.py migrate
※コンソールにはDJango用のDB構築をしていなかったため
そちらも出力されています。
プロジェクトフォルダ直下にdb.sqlite3というファイルがデータベース(SQLite)のファイルです。
中身を除くと下記のような感じでテーブルが作成されています。 (フリーソフト:PupSQLite使用)
テーブル名は、「アプリケーション名」+ '_' + 「テーブル名」という感じで作成されるようです。