0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Djangoでマイグレーションファイルを作成してテーブルを作成する

Posted at

はじめに

こんにちは、エンジニアのkeitaMaxです。

Djangoでmodels.pyを書いて、マイグレーションファイルを作成し実際にDBにテーブルを作成してみようと思います。

models.pyの作成

名前と住所があるUserテーブルを作成してみようと思います

models.py
class User(models.Model):
    name = models.CharField("名前", max_length=100)
    address = models.CharField("住所", max_length=100)

    def __str__(self):
        return self.name

models.pyを↑のように定義しました。

migrationファイルの作成

以下コマンドを叩くと、models.pyに沿ってmigrationファイルが出力されます。

python manage.py makemigrations
0001_initial.py
# Generated by Django 4.2 on 2025-05-03 10:19

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='User',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100, verbose_name='名前')),
                ('address', models.CharField(max_length=100, verbose_name='住所')),
            ],
        ),
    ]

このようにmigrationsディレクトリ配下に出力されました。

DBにテーブルを登録する

今度は以下コマンドでmigrationファイルからデータベースにテーブルを作成します。

python manage.py migrate

成功すればOKと表示されます。

確認

以下のようにして確認します。
私はmakeファイルを作成していて

db: 
	docker compose exec db mysql -u root -p

こんな感じで記載しているため、
make dbでmysqlサーバの中に入れています。

% make db
mysql> USE database;
Database changed
mysql> SHOW TABLES;
+----------------------------+
| Tables_in_database         |
+----------------------------+
| app_user                   |
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
+----------------------------+
13 rows in set (0.01 sec)

mysql> 

app_userテーブルが作成できているのを確認できました。

おわりに

この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。

最後まで読んでいただきありがとうございました!

参考

次の記事

|

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?