はじめに
こんにちは、エンジニアの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
テーブルが作成できているのを確認できました。
おわりに
この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。
最後まで読んでいただきありがとうございました!
参考
次の記事
|