6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows+Anaconda+Django環境にXAMPPを入れてMySQLを使う

Last updated at Posted at 2018-11-17

概要

Djangoを使ってもくもく会をすることになったので、Windows上に開発環境を整えました。
Django公式チュートリアルではSQLiteで進めていますが、MySQLを使ってみたかったので導入してみました。Windowsで環境を作ってる人はあまり見かけなかったので参考になれば幸いです。

環境

  • Windows 10 Pro
  • Anaconda 5.3
  • Python 3.7
  • Django 2.1
  • XAMPP 7.2.12
    • MariaDB 10.1.37
    • MySQLバージョンとの互換はよくわからない

手順

XAMPPインストールは割愛します🙋

MySQL用ドライバをインストールする

公式ページ記載の通り、MySQLと連携するにはドライバが必要なようです。mysqlclient以外にもPython用のドライバはあるみたいですが、公式に記載のあるものを使います。

ドライバダウンロード

こちらから自身の環境に合ったドライバをダウンロードします。cpXXの部分はPythonバージョンに対応しています。私の環境ではmysqlclient‑1.3.13‑cp37‑cp37m‑win_amd64.whlを使いました。

  • マシンはSurface Laptopなのでamdプロセッサを使ってない気がするけど、これじゃないと動かなかった😐

ドライバインストール

Anaconda Promptを起動し、ダウンロードディレクトリに移動してからpip installします。インストール前にDjango環境をactivateします。
ここでは、Djangoがインストールされている環境をdjangoとしています。

AnacondaPrompt
(base) C:\Users\hoge>activate django
(django) C:\Users\hoge>cd Downloads
(django) C:\Users\hoge\Downloads>pip install mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl
Processing c:\users\hoge\downloads\mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl
Installing collected packages: mysqlclient
Successfully installed mysqlclient-1.3.13

(django) C:\Users\hoge\Downloads>

MySQL(MariaDB)側で必要な設定をする

XAMPPを起動して、MySQLサーバもStartしておきます。その後、XAMPPコンソール右側のShellボタンを押してXAMPPプロンプトを起動します。

ユーザの作成

DjangoからDBに接続するためのユーザを作ります。面倒なのでフルコントロールを与えます。

XAMPP_Prompt
$ mysql -u root -p
MariaDB [(none)]> CREATE USER djangouser IDENTIFIED BY 'password';
MariaDB [(none)]> grant all on *.* to djangouser@localhost identified by 'password';

データベースの作成

適当にデータベースを作っておきます。

XAMPP_Prompt
MariaDB [(none)]> CREATE DATABASE polls;

Django側で接続設定を行う

プロジェクトを作成する

既に作ってあれば飛ばします。作ってなければ以下で作ります。

AnacondaPrompt
(django) C:\Users\hoge>django-admin startproject mysite

接続設定を追記する

プロジェクト直下のmanage.pyを以下のように編集します。

manage.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'polls',
        'USER': 'djangouser',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}

マイグレーションする

manage.pyが保存されているディレクトリに移動した後マイグレーションを実行します。

AnacondaPrompt
(django) C:\Users\hoge\project\mysite>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 admin.0003_logentry_add_action_flag_choices... 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

(django) C:\Users\hoge\work_django\project\mysite>

DB側を確認する

空のデータベースに以下のテーブルが作成されていれば成功!🙆

XAMPP_Prompt
MariaDB [mysql]> use polls;
Database changed
MariaDB [polls]> show tables;
+----------------------------+
| Tables_in_polls            |
+----------------------------+
| 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             |
+----------------------------+
10 rows in set (0.00 sec)

MariaDB [polls]>
6
7
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
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?