Django2.2でPyMySQLを使いたかった
原因不明のアレルギー性の蕁麻疹で更新どころじゃなかった。 治ったので再開します。
TECH::EXPERTの方の進捗も全然行けそうなので、やりたかったPythonいじりました。
PythonでWebサイトを作りたかったので、WebフレームワークであるDjangoを
この記事を利用して、勉強していた。
PyMySQLを使いたかったのでDjangoでPyMySQLを使うために、DjangoのDB関連の設定をPyMySQL用に変更した
setting.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'sample', #作成したデータベースの名前を入力 'USER': 'root', #ローカルホストなのでユーザー名はroot 'PASSWORD': '', #以下はローカルホストなので空でOK 'HOST': '', 'PORT': ', 'OPTIONS': { 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", }, 'TEST': { 'NAME': 'test_sample' } } }
manage.py
一番後ろに追記
import pymysql #pymysqlのモジュールをimport pymysql.install_as_MySQLdb()
ちなみに本番環境でPyMySQLを使う場合にはさらにwsgi.pyにもmanage.pyと同様の記述を追加しなくてはならない。
これで準備OK ターミナルに以下を入力
python3 manage.py migrate
けどエラー吐きよった。
ImportError: No module named pymysql
どうやらpymysqlがちゃんとimportされてないらしい。
sysにpymysqlのパスを通してもダメだった。。。。
...
解決方法
Djangoのバージョンを下げる
いろいろ調べた結果、Django2.2ではまだPyMySQLは対応していないらしく、バージョンを2.1に下げることで、解決するらしい。アンインストールしてDjango2.1をインストールして再度migrateしてみた
python3 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
いけた....
このエラー解決するのにかなり時間かかってた。やっと先進める。