SSブログ

1.8 データベースへ反映(DJango 2.2.7) [Django]

少し時間が空きましたが・・。

データベースの作成作業です。流れ的には下記となります。
これは、今後テーブルの内容を変更したい場合も同じ操作となります。

1. データベース反映のスクリプトファイル作成
2. スクリプトファイル実行してデータベースへ反映


1. データベース反映のスクリプトファイル作成方法
 1.6で作成したモデルクラスをDJangoが読取って自動で
 スクリプトファイルを作ってくれます。(DDLの作成)
 Create文を作らなくていいんです。素敵ですね。

コマンド:
python manage.py makemigrations applicantctl

WS000027.JPG


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構築をしていなかったため
 そちらも出力されています。

WS000026.JPG


 プロジェクトフォルダ直下にdb.sqlite3というファイルがデータベース(SQLite)のファイルです。
 中身を除くと下記のような感じでテーブルが作成されています。 (フリーソフト:PupSQLite使用)
 テーブル名は、「アプリケーション名」+ '_' + 「テーブル名」という感じで作成されるようです。

WS000028.JPG






タグ:Django migrate
nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。