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

【備忘録】PythonでMySQLのデータベースを作成 / 初期化する方法

Last updated at Posted at 2024-01-14

備考

Python:3.9
MySQL:8.0.31
動作環境:MacOS
開発環境:PyCharm

1. PyCharmにて新規プロジェクトを作成する

2. プロジェクトを以下の構成になるようにファイルを作成する

フォルダ構成.
.
├── main.py
├── env.py
├── .env
└── requirements.txt

3. requirements.txtファイルを以下の内容にする

requirements.txt
mysql
mysql-connector-python
python-dotenv

4. ターミナルにてコマンドを入力してモジュールをインストールする

ターミナル.
pip install -r requirements.txt

5. .envファイルを以下の内容にする

.env
# DB接続情報
DB_USER = 'root'
DB_PASSWORD = 'MySQLのパスワード'
DB_HOST = 'localhost'
DB_NAME = '任意の名前'

6. env.pyファイルを以下の内容にする

env.py
import os
from dotenv import load_dotenv
from os.path import join, dirname

dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)

class Env:
    # DB接続情報
    DB_USER = os.environ.get("DB_USER")
    DB_PASSWORD = os.environ.get("DB_PASSWORD")
    DB_HOST = os.environ.get("DB_HOST")
    DB_NAME = os.environ.get("DB_NAME")

7. main.pyファイルを以下の内容にする

main.py
import mysql.connector
from env import Env

if __name__ == "__main__":
    
    print("データベースの作成 / 初期化を開始します")
    
    cnx = None
    try:
        cnx = mysql.connector.connect(
            user=Env.DB_USER,
            password=Env.DB_PASSWORD,
            host=Env.DB_HOST
        )

        cursor = cnx.cursor()

        # データベースの作成
        cursor.execute(f"CREATE DATABASE {Env.DB_NAME}")
        cursor.execute("SHOW DATABASES")
        print(f"データベース:{Env.DB_NAME}を作成", cursor.fetchall())

        cursor.close()

    except Exception as e:
        if e.errno == 1007:
            # 対象のデータベースが既に存在する場合は削除
            cursor.execute(f"DROP DATABASE {Env.DB_NAME}")
            cursor.execute("SHOW DATABASES")
            print(f"データベース:{Env.DB_NAME}を削除", cursor.fetchall())
            # データベースの作成
            cursor.execute(f"CREATE DATABASE {Env.DB_NAME}")
            cursor.execute("SHOW DATABASES")
            print(f"データベース:{Env.DB_NAME}を作成", cursor.fetchall())
        cnx.close()

    finally:
        if cnx is not None and cnx.is_connected():
            print("データベースの作成 / 初期化が終了しました")
            cnx.close()

    print("データベースの作成 / 初期化が完了しました")

8. ターミナルにてコマンドを入力してデータベースを作成 / 初期化する

ターミナル.
python main.py
1
0
1

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
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?