※この記事は未解決記事です。
##開発環境
PC: MacOS X 10.9.4
Python3.4.1
Django1.6.6
##DB設定が反映されない現象
前回の記事ですんなりプロジェクト作成がうまくいったと思ったが、下記のEclipse
のデータベースの設定が反映されていないことに気づいた。
データベースと同期($ python3 manage.py syncdb
)したのだが、対象のMySQL
データベースに反映されない。setting.py
のDB設定の記述を確認してみたらsqlite3
の設定となっている。そこでコメントアウトして、直接mySQL
の設定を記述してみた。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'USER':'db_user',
'PASSWORD':'xxxxxxx',
'HOST':'localhost',
'PORT':'3306',
}
}
#DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
#}
MySQLモジュールエラーの頻発
しかし、再度、同期($ python3 manage.py syncdb
)すると下記エラーが発生するようになった。
ImportError: No module named 'MySQLdb'
どうやら、MySQL
モジュールが見つからないようだ。そこで、MySQL
モジュールのインストールを試みた。
$ pip3 install mysql-python
しかし、今度は下記エラー。
ImportError: No module named 'ConfigParser'
今度は、下記にてインストールを試みた。
$ pip3 install mysql-connector-python --allow-external mysql-connector-python
今度は、インストール自体はうまく行ったようだ。
しかし、まだエラーが続く。
ImportError: No module named 'MySQLdb'
MySQL-for-Python-3 のインストール
諦めず、最新のMySQL-for-Python-3
とやらが、Githubにあったので、インストールを試してみた。
pip3 install --user https://github.com/davispuh/MySQL-for-Python-3/archive/1.0.tar.gz
インストール自体はうまく行ったようだ。しかし、また別のエラーが続く。
Library not loaded: libmysqlclient.18.dylib
そこで、MySQL
のライブラリにあるであろうlibmysqlclient.18.dylib
のシンボリックリンクを /usr/lib
に作ってみた。
$ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
##補足事項
その後、Django公式マニュアルを読んででみたら下記の記述。
Python 3
At the time of writing, the latest release of MySQLdb (1.2.4) doesn’t support Python 3. In order to use MySQL under Python 3, you’ll have to install an unofficial fork, such as MySQL-for-Python-3.
This port is still in alpha. In particular, it doesn’t support binary data, making it impossible to use django.db.models.BinaryField.
簡単に言うと、
Python3
マニュアル記述時点では、MySQLdb (1.2.4)最新リリース版ではPython 3をサポートしていない。MySQLを使用するなら MySQL-for-Python-3のような非公式なフォーク版をインストールしたほうが良い。
この移植版はまだαバージョンで、とりわけ、バイナリ型データをサポートしていない為、django.db.modules.BinaryFieldも利用できない。
ふむむ~。
##途中経過として
どうやらWebやマニュアルで調べる限り、現時点(2014年08月末)ではPython3
にMySQLdb
が対応していないようだ。
それでは、どのように諦めるべきか?
Python
初心者なので、リリース間隔(いつまで待てば対応されるか)の感覚が掴めない。
- DBを変更する (MySQL → 他のDB)
- Pythonのバージョンを変更する (3.4 → 3.1)
- Python/Djangoの勉強をやめる
そう言えば1〜2年前にRuby on Rails
でも、MySQL
コネクタ周りでハマったな。
やっぱ、Python
初心者が首を突っ込むような問題では無い気がしてきた。悔しいのでアドバイスやご指摘をよろしくお願いします。