Django プロジェクトで MySQL データベースをセットアップする方法

# Django プロジェクトで MySQL データベースをセットアップする方法

この記事では、Django プロジェクトで MySQL データベースをセットアップし、基本的なデータ操作を行う方法を詳しく丁寧に紹介します。Django と MySQL の連携に関心がある方は、ぜひ参考にしてください。

https://qiita.com/motty1050/items/535c9c86499761c6dfb1

この記事で構築した環境前提です。備忘録として残しておきます。

## 1. MySQL ユーザーの作成と権限設定

まず、MySQL に接続し、Django プロジェクト用のユーザーを作成します。

### 1.1 MySQL に接続する

ターミナルで次のコマンドを入力して、MySQL に `root` ユーザーで接続します。

```bash
$ mysql -u root -p
```

パスワードを入力して MySQL にログインします。

### 1.2 ユーザーの作成と権限の付与

ログインしたら、次のコマンドを実行して、新しいユーザー `motty1050` を作成し、すべての権限を付与します。

```sql
mysql> CREATE USER 'your_user_name'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'your_user_name'@'localhost';
mysql> FLUSH PRIVILEGES;
```

- **CREATE USER**: 新しいユーザー `your_user_name` を作成します。
- **GRANT ALL PRIVILEGES**: このユーザーにすべての権限を付与します。
- **FLUSH PRIVILEGES**: 権限の変更を即座に反映させます。

これで、ユーザー `your_user_name` が作成され、すべてのデータベースに対する操作権限が付与されました。

## 2. データベースの作成

次に、新しいデータベースを作成します。ユーザー `your_user_name` でログインし、`test_db` という名前のデータベースを作成します。

### 2.1 ユーザー `your_user_name` で MySQL にログイン

以下のコマンドを使用して、`motty1050` ユーザーで MySQL にログインします。

```bash
$ mysql -u your_user_name -p
```

パスワードを入力してログインします。

### 2.2 データベースの作成

次に、データベース `test_db` を作成します。

```sql
mysql> CREATE DATABASE test_db;
```

- **CREATE DATABASE**: 新しいデータベース `test_db` を作成します。

これで、`test_db` というデータベースが作成されました。

## 3. テーブルの作成とデータの挿入

作成したデータベース `test_db` を使用して、新しいテーブルを作成します。

### 3.1 データベースの使用

まず、作成したデータベース `test_db` を使用します。

```sql
mysql> USE test_db;
```

### 3.2 テーブルの作成

次に、新しいテーブル `sample_table` を作成します。

```sql
mysql> CREATE TABLE sample_table (
    -> id INT AUTO_INCREMENT PRIMARY KEY,
    -> name VARCHAR(50),
    -> created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    -> );
```

- **id**: 自動インクリメントの整数型の主キーです。
- **name**: 最大 50 文字の名前を格納するためのカラムです。
- **created_at**: レコードが作成された日時を自動で記録するタイムスタンプです。

### 3.3 データの挿入

テーブル `sample_table` にデータを挿入します。

```sql
mysql> INSERT INTO sample_table (name) VALUES ('Alice');
mysql> INSERT INTO sample_table (name) VALUES ('Bob');
```

- **INSERT INTO**: テーブルに新しいデータを追加します。
- `name` カラムに `Alice` と `Bob` のデータが追加されます。

## 4. データの確認

挿入したデータが正しく格納されているか確認するために、次のクエリを実行します。

```sql
mysql> SELECT * FROM sample_table;
```

出力例:

```
+----+-------+---------------------+
| id | name  | created_at          |
+----+-------+---------------------+
|  1 | Alice | 2024-10-20 12:34:56 |
|  2 | Bob   | 2024-10-20 12:35:12 |
+----+-------+---------------------+
```

- **SELECT**: テーブル内のすべてのデータを取得します。

## 4.1 データの更新

テーブル内のデータを更新してみましょう。例えば、`id` が 1 のレコードの `name` を `'Alice'` から `'Alice_updated'` に変更します。

```sql
mysql> UPDATE sample_table SET name = 'Alice_updated' WHERE id = 1;
```

- **UPDATE**: 既存のデータを更新します。
- **SET**: 更新するカラムと新しい値を指定します。

## 4.2 データの削除

特定のデータを削除するには、次のクエリを使用します。例えば、`name` が `'Alice_updated'` のレコードを削除します。

```sql
mysql> DELETE FROM sample_table WHERE name = 'Alice_updated';
```

- **DELETE FROM**: テーブルからデータを削除します。
- **WHERE**: 削除する条件を指定します。

## 5. Django プロジェクトでの MySQL 接続設定

Django プロジェクトで MySQL を使用するために、`settings.py` に以下のようにデータベースの接続情報を設定します。

```python
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test_db',
        'USER': 'your_user_name',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}
```

- **ENGINE**: MySQL を使用するためのエンジンを指定します。
- **NAME**: 使用するデータベースの名前です。
- **USER** と **PASSWORD**: データベースに接続するためのユーザー名とパスワードです。
- **HOST** と **PORT**: MySQL サーバーのホスト名とポート番号です。

### 5.1 マイグレーションの実行

次に、Django のマイグレーションを実行してデータベースのセットアップを完了させます。

```bash
$ python manage.py migrate
```

- **migrate**: Django アプリケーションのデータベーススキーマを作成・更新します。

## 6. Django でのデータ操作

Django シェルを使って、データベースにアクセスし、データの操作を行うことができます。

### 6.1 Django シェルの起動

次のコマンドを実行して Django シェルを起動します。

```bash
$ python manage.py shell
```

### 6.2 データの操作

シェル内で次のようにしてデータを操作します。

```python
from your_app.models import SampleTable

# 新しいデータの追加
SampleTable.objects.create(name='Charlie')

# テーブル内のすべてのデータを取得して表示
for record in SampleTable.objects.all():
    print(record.id, record.name, record.created_at)

# 特定のデータの更新
record_to_update = SampleTable.objects.get(id=1)
record_to_update.name = 'Charlie_updated'
record_to_update.save()

# 特定のデータの削除
record_to_delete = SampleTable.objects.get(name='Bob')
record_to_delete.delete()
```

- **create**: 新しいレコードを追加します。
- **objects.all()**: テーブル内のすべてのレコードを取得します。
- **get**: 特定の条件に合致するレコードを取得します。
- **save**: レコードの変更を保存します。
- **delete**: 特定のレコードを削除します。

これで、Django の ORM を使ってデータの追加、取得、更新、削除ができるようになります。

## まとめ

この記事では、MySQL データベースの作成、ユーザー設定、Django との接続方法について詳しく説明しました。MySQL と Django の連携を通して、データベースの操作をスムーズに行うための基本的な手順を学びました。

これらの手順をマスターすることで、Django プロジェクトでのデータベース管理がより簡単になります。もしこの記事が役に立ったと思ったら、いいねやシェアをお願いします！コメントでフィードバックもいただけると嬉しいです。