1
2

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を仮想環境上に構築し、MySQLをデータべースとして構築してGitHubでバージョン管理する

Last updated at Posted at 2024-10-17

DjangoとMySQLを連携する方法 - Python 3.11のインストールからデータベース設定、GitHubへのSSH接続まで

このガイドでは、DjangoプロジェクトをMySQLデータベースに接続し、Python 3.11を使用して仮想環境を構築する手順を紹介します。さらに、GitとGitHubでのバージョン管理方法、SSHを使用してGitHubにリポジトリをプッシュする手順もカバーしています。
python3.12ではMySQLのmysqlclientを利用できなかったため備忘録として残しておきます。
Gitでバージョン管理もしたかったので加筆修正しました。

1. Python 3.11のインストール

まずは、UbuntuでPython 3.11を利用するために必要な手順を実行します。

1.1 Deadsnakes PPAを追加してPython 3.11をインストール

Ubuntuの標準リポジトリに含まれていないPythonの新しいバージョンをインストールするために、Deadsnakes PPAを追加します。

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.11 python3.11-venv python3.11-dev

1.2 仮想環境の作成と有効化

Python 3.11を使用して仮想環境を作成し、有効化します。

python3.11 -m venv venv
source venv/bin/activate

1.3 DjangoとMySQLクライアントのインストール

仮想環境が有効化された状態で、DjangoとMySQLクライアントをインストールします。

pip install django mysqlclient

2. GitとGitHubでのバージョン管理

DjangoプロジェクトをGitとGitHubでバージョン管理し、SSHを使用してリモートリポジトリに接続する手順を紹介します。

2.1 Gitの初期化

プロジェクトディレクトリでGitを初期化します。

cd /path/to/your/folder  # プロジェクトフォルダに移動
git init  # Gitリポジトリを初期化

2.2 リモートリポジトリの作成

GitHubで新しいリポジトリを作成し、ローカルリポジトリと接続します。

2.3 SSHキーの生成とGitHubへの登録

GitHubとSSH接続を行うために、SSHキーを生成し、GitHubに登録します。

  1. SSHキーの生成:

    ssh-keygen -t ed25519 -C "your_email@example.com"
    

    ここで、your_email@example.com はGitHubアカウントに登録しているメールアドレスです。

  2. SSHエージェントを開始し、鍵を追加:

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_ed25519
    
  3. GitHubに公開鍵を追加:

    公開鍵をクリップボードにコピーします。

    cat ~/.ssh/id_ed25519.pub
    

    表示された公開鍵をコピーし、GitHubの設定画面で「SSH and GPG keys」から「New SSH key」をクリックして追加します。

2.4 .gitignoreの設定

不要なファイルやディレクトリをGitで追跡しないようにするため、.gitignoreファイルを作成します。

touch .gitignore

.gitignoreファイルに以下のような設定を追加します。

venv/
__pycache__/
*.pyc
db.sqlite3
.env

2.5 ファイルの追加とコミット

プロジェクトのファイルを追加してコミットします。

git add .
git commit -m "Initial commit"

2.6 リモートリポジトリの追加

リモートリポジトリをSSHを使用して追加します。

git remote add origin git@github.com:your-username/your-repo.git

2.7 リモートリポジトリへのプッシュ

ローカルのコミットをGitHubのリモートリポジトリにプッシュします。

git branch -M main
git push -u origin main

3. MySQLユーザーの作成とデータベースの設定

次に、DjangoとMySQLを連携するために必要なユーザーとデータベースを作成し、適切な権限を設定します。

3.1 MySQLにログイン

MySQLのrootユーザーでログインします。

sudo mysql -u root -p

3.2 ユーザーの作成

Djangoで使用するユーザーmy_django_userを作成し、パスワードを設定します。

CREATE USER 'my_django_user'@'localhost' IDENTIFIED BY 'password';

3.3 データベースの作成

Djangoプロジェクト用のデータベースmy_django_dbを作成します。

CREATE DATABASE my_django_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

3.4 データベース権限の付与

作成したユーザーmy_django_userに対してデータベースmy_django_dbへの全ての権限を付与します。

GRANT ALL PRIVILEGES ON my_django_db.* TO 'my_django_user'@'localhost';
FLUSH PRIVILEGES;

3.5 権限の確認

ユーザーに適切な権限が付与されているか確認します。

SHOW GRANTS FOR 'my_django_user'@'localhost';

4. Djangoのデータベース設定の確認

Djangoプロジェクトのsettings.pyファイルで、MySQLデータベースに接続するための設定を行います。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'my_django_db',  # 作成したデータベース名
        'USER': 'my_django_user', # 作成したユーザー名
        'PASSWORD': 'password',  # ユーザーのパスワード
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

5. マイグレーションの実行

仮想環境が有効化されていることを確認した上で、Djangoのマイグレーションを実行します。

python manage.py migrate

6. トラブルシューティング

DjangoとMySQLの連携中に発生する可能性のあるエラーと、その対処方法を紹介します。

6.1 MySQLのユーザー権限エラー (1044)

エラー OperationalError: (1044, "Access denied for user 'my_django_user'@'localhost' to database 'my_django_db'") は、ユーザーにデータベースへの権限が不足していることを意味します。この場合、GRANT ALL PRIVILEGES コマンドを再実行して権限を付与してください。

6.2 MySQLへの接続エラー (1045)

エラー OperationalError: (1045, "Access denied for user 'my_django_user'@'localhost' (using password: YES)") は、ユーザー名やパスワードに誤りがあるか、認証プラグインに問題があることを示しています。settings.py の設定を再確認し、CREATE USER コマンドで正しい認証プラグインを使用するようにしてください。

6.3 Django設定ファイルの再確認

settings.py に記載されているデータベース接続情報 (USER, PASSWORD, NAME など) が正しいか再確認してください。特にスペルミスや小文字・大文字の違いに注意してください。

python manage.py migrate

5. トラブルシューティング

DjangoとMySQLの連携中に発生する可能性のあるエラーと、その対処方法を紹介します。

5.1 MySQLのユーザー権限エラー (1044)

エラー OperationalError: (1044, "Access denied for user 'my_django_user'@'localhost' to database 'my_django_db'") は、ユーザーにデータベースへの権限が不足していることを意味します。この場合、GRANT ALL PRIVILEGES コマンドを再実行して権限を付与してください。

5.2 MySQLへの接続エラー (1045)

エラー OperationalError: (1045, "Access denied for user 'my_django_user'@'localhost' (using password: YES)") は、ユーザー名やパスワードに誤りがあるか、認証プラグインに問題があることを示しています。settings.py の設定を再確認し、CREATE USER コマンドで正しい認証プラグインを使用するようにしてください。

5.3 Django設定ファイルの再確認

settings.py に記載されているデータベース接続情報 (USER, PASSWORD, NAME など) が正しいか再確認してください。特にスペルミスや小文字・大文字の違いに注意してください。

まとめ

  • Pythonのインストールと仮想環境のセットアップ: Ubuntu上でPython 3.11をインストールし、仮想環境を構築しました。
  • MySQLでデータベースとユーザーの作成、および権限の付与: MySQLユーザーとデータベースを作成し、Djangoからアクセスできるように権限を設定しました。
  • Django設定ファイルでのデータベース接続情報の設定: settings.py にMySQL接続情報を正しく設定しました。
  • マイグレーションの実行とエラー対応: マイグレーションを実行し、発生する可能性のあるエラーに対して適切に対処しました。

これらの手順を実行することで、DjangoプロジェクトとMySQLデータベースを正しく連携させることができます。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?