LoginSignup
77
87

More than 3 years have passed since last update.

Djangoでmysqlに接続

Last updated at Posted at 2018-10-08

Djangoでデータベースの接続先をMySQLに変更(最低限の設定)

結構詳しく書きます

環境

macOS High Sierra 10.13.6
Homebrew 1.7.6 (mysqlのインストールに使用)
mysql Ver 8.0.12 for osx10.13 on x86_64 (Homebrew)
Python 3.7.0
Django 2.0.1
pip 18.1

手順表

  1. HomebrewMySQLをインストール
  2. MySQLのサーバーを起動
  3. データベースを作成
  4. 'pip'でパッケージPyMySQLをインストール
  5. Djangoアプリーション(作成したアプリ)のsettings.pyのデータベース情報を変更
  6. Djangoアプリーション(作成したアプリ)のmanage.pyに記述を追加(コードの内容がわからないので、曖昧)
  7. python manage.py migrateでデータベースにテーブルを追加
  8. MySQLで作成できたか確認

(追記)
models.pyの説明を忘れていたので他の記事のリンク
Django マイグレーション まとめ
はじめての Django アプリ作成、その2

1. HomebrewMySQLをインストール

ターミナルでコマンド実行して、MySQLのインストール確認とバージョン確認
(以下ターミナルでのコマンド実行は$ にて記述)

$ brew install mysql
$ mysql --version
mysql  Ver 8.0.12 for osx10.13 on x86_64 (Homebrew)

2. MySQLのサーバーを起動

$ mysql.server start 
Starting MySQL
. SUCCESS! 

(補足)サーバー停止は以下のコマンド

$ mysql.server stop
Shutting down MySQL
.. SUCCESS!

3. データベースを作成

データベースに接続

$ mysql -u root

データベースを作成(データベース名は sample)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

mysql> create database sample;
Query OK, 1 row affected (0.06 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sample             |
| sys                |
+--------------------+

4. pipでパッケージPyMySQLをインストール

$ pip install pymysql
$ pip freeze -l
PyMySQL==0.9.2

5. Djangoアプリーション(作成したアプリ)のsettings.pyのデータベース情報を変更

アプリケーションの'setting.py'の記述変更

setting.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sample', # 作成したデータベース名
        'USER': 'root', # ログインユーザー名
        'HOST': '',
        'PORT': '',
    }
}

必要に応じてオプションを追加

6. Djangoアプリーション(作成したアプリ)のmanage.pyに記述を追加

追加したパッケージを使用する記述を追加

manage.py
import pymysql
pymysql.install_as_MySQLdb()

7. python manage.py migrateでデータベースにテーブルを追加

マイグレーションを実行(テーブルを作成)

$ python manage.py migrate
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
/Users/masaki/.virtualenvs/env1/lib/python3.7/site-packages/pymysql/cursors.py:170: Warning: (3719, "'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.")
  result = self._query(query)
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying sessions.0001_initial... OK

8. MySQLで作成できたか確認

$ mysql -u root
mysql> use sample
Database changed
mysql> show tables;
+----------------------------+
| Tables_in_sample           |
+----------------------------+
| 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             |
+----------------------------+

作成を確認!!!!!!!

終わり

77
87
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
77
87