python3.doc_44
R e i - D r e a m
for Laravel
TOP > Python3 > Django(DB接続)
Guest
login

最終投稿日:2022年6月18日

Django(DB接続)
MySQL に接続する
● PyMySQLのインストール
Python3系では MySQL の接続に「PyMySQL」を使用します
以下を叩いてインストールします
    pip install PyMySQL
    (pip install PyMySQL==0.7.9    ※バージョンを指定する場合)
インストール後は以下を叩いて確認する
    pip freeze
        Django==2.0.1
        PyMySQL==0.8.0
        pytz==2017.2
        等が確認できる。。
● manage.py の設定
import pymysql
pymysql.install_as_MySQLdb()                      ※import 文のすぐ下に記述する
● settings.py の設定
DATABASES を編集します。
例)
[ 変更前 ]
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
[変更後]
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'HOGE_DB',          # DB名
        'USER' : 'root',                      # DBへアクセスするユーザー名
        'PASSWORD' : '',                  # DBへアクセスするパスワード
        'HOST' : 'localhost',           # DBサーバ
        'PORT' : '3306',                    # DBのポート番号
        'OPTIONS' : {
            # MySQL5.6以上の制約で動作させる
            'init_command' : "SET sql_mode='STRICT_TRANS_TABLES'",
        },
        'TEST' : {
            'NAME' : 'test_HOGE_DB' #テスト用のDBがあれば追記
        }
    }
}
● DBの登録
実際に以下の様に MySQL にて HOGE_DB を登録する。
例)
    mysql -u root
    CREATE DATABASE HOGE_DB CHARACTER SET utf8;
● 実際にマイグレーションを実行して Django と MySQL が接続できているか確認します
python manage.py migrate                      ※manage.py の階層から叩く
以下の様な内容が表示されればOKです!
Operations to perform:
    Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
    Applying contenttypes.0001_initial... OK
    Applying auth.0001_initial... OK
    Applying admin.0001_initial... OK
    Applying admin.0002_logentry_remove_auto_add... OK
    Applying contenttypes.0002_remove_content_type_name... OK
    Applying auth.0002_alter_permission_name_max_length... OK
    Applying auth.0003_alter_user_email_max_length... OK
    Applying auth.0004_alter_user_username_opts... OK
    Applying auth.0005_alter_user_last_login_null... OK
    Applying auth.0006_require_contenttypes_0002... OK
    Applying auth.0007_alter_validators_add_error_messages... OK
    Applying auth.0008_alter_user_username_max_length... OK
    Applying auth.0009_alter_user_last_name_max_length... OK
    Applying sessions.0001_initial... OK
MySQL のテーブルに以下が作成されていれば成功です!
MariaDB [hoge_db]> show tables;
+----------------------------+
| Tables_in_hoge_db          |
+----------------------------+
| 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             |
+----------------------------+
● 本番環境でもMySQLが使えるようにする
今までの手順を行うことで、runserver の環境であれば MySQL を問題なく利用することができます。
ただ、runserver の環境はあくまで「開発環境」であり、本番運用の環境ではありません。
「本番環境」でも MySQL が使えるようにするためには wsgi.py の編集が必要になります。
[ROOT/root/wsgi.py]
    import pymysql
    pymysql.install_as_MySQLdb()
PostgreSQL に接続する
● psycopg2 のインストール
以下を叩いてインストールします
    pip install psycopg2
インストール後は以下を叩いて確認する
    pip freeze
        psycopg2==2.7.4 がいればインストールされている
● manage.py の設定
特になし。。
● settings.py の設定
DATABASES を編集します。
例)
[ 変更前 ]
DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
[変更後]
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django_db',                  # DB名 ※大文字・小文字を認識するので注意!!
        'USER' : 'hoge',                              # DBへアクセスするユーザー名
        'PASSWORD' : 'xxxxxxxx',          # DBへアクセスするパスワード
        'HOST' : 'localhost',                     # DBサーバ
        'PORT' : '5432',                              # DBのポート番号
        'TEST' : {
            'NAME' : 'test_HOGE_DB'    #テスト用のDBがあれば追記
        }
    }
}
● 実際にマイグレーションを実行して Django と PostgreSQL が接続できているか確認します
python manage.py migrate        ※manage.py の階層から叩く
MySQL と同様に新規テーブルが10個作成されればOK!
レンズモード 【新規購入限定用】
ログインしてコメントを残そう!!


きっぷる
きっぷる