環境

  • Nginx+Uwsgi
  • Django1.10.5
  • Python 3.5.2
1
2
3
$ cat requirements.txt
Django==1.10.5
PyMySQL==0.7.10

インストール

1
$ pip install -r requirements.txt

Djangoセットアップ

1
2
3
$ django-admin startproject [project_name]
$ cd [project_name]
$ python manage.py startapp [app_label]

MySQLの接続設定

接続先の情報(環境変数)は、docker-compose.yml.envrc(direnv)に記述してます

1
2
3
4
5
6
7
8
9
10
11
$ vim [app_label]/settings.py

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': os.environ.get('ENV_DB_HOST'),
'NAME': os.environ.get('ENV_DB_NAME'),
'USER': os.environ.get('ENV_DB_USER'),
'PASSWORD': os.environ.get('ENV_DB_PASS'),
}
}

MySQLを使うようDjango側に設定

コマンドラインからmanage.py経由で接続する場合と、uWSGI経由でwsgi.pyから接続する場合があるため、両方に以下の記述が必要でした

1
2
3
// 「manage.py」と「wsgi.py」の両方に記述
import pymysql
pymysql.install_as_MySQLdb()

実行してみる

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ 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
Applying auth.0008_alter_user_username_max_length... OK
Applying sessions.0001_initial... OK