🇴🇲
Djangoでmysqlに接続
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
手順表
-
Homebrew
でMySQL
をインストール - MySQLのサーバーを起動
- データベースを作成
- 'pip'でパッケージ
PyMySQL
をインストール -
Django
アプリーション(作成したアプリ)のsettings.py
のデータベース情報を変更 -
Django
アプリーション(作成したアプリ)のmanage.py
に記述を追加(コードの内容がわからないので、曖昧) -
python manage.py migrate
でデータベースにテーブルを追加 -
MySQL
で作成できたか確認
(追記)
models.pyの説明を忘れていたので他の記事のリンク
Django マイグレーション まとめ
はじめての Django アプリ作成、その2
Homebrew
でMySQL
をインストール
1. ターミナルでコマンド実行して、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 |
+--------------------+
pip
でパッケージPyMySQL
をインストール
4. $ pip install pymysql
$ pip freeze -l
PyMySQL==0.9.2
Django
アプリーション(作成したアプリ)のsettings.py
のデータベース情報を変更
5. アプリケーションの'setting.py'の記述変更
setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'sample', # 作成したデータベース名
'USER': 'root', # ログインユーザー名
'HOST': '',
'PORT': '',
}
}
必要に応じてオプションを追加
Django
アプリーション(作成したアプリ)のmanage.py
に記述を追加
6. 追加したパッケージを使用する記述を追加
manage.py
import pymysql
pymysql.install_as_MySQLdb()
python manage.py migrate
でデータベースにテーブルを追加
7. マイグレーションを実行(テーブルを作成)
$ 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
MySQL
で作成できたか確認
8. $ 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 |
+----------------------------+
作成を確認!!!!!!!
Discussion