Vagrant環境で実験。MySQLは既に入っていて、Djangoのテストページまで表示できているのが前提。
まずsettings.pyのデータベースをMySQLに。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myproject',
'USER':'vagrant',
'PASSWORD':'**************',
'HOST':'',
}
}
で、
python manage.py sql [APPNAME]
すると以下のエラーとなり上手くいかない。
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
MySQLdb っていうモジュールが無いよと言われているわけだが、pip search MySQLdb
で見つからないので少しハマった。そこでググる。
とりあえずそれらしいものを実行。
pip install mysql-python
だがこのインストールがそもそも失敗してしまう。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 40: ordinal not in range(128)
おまけに何を言われているのかよく分からない(文字コード?)ので、ノータイムで即ググる。
・・・・これ?
http://momijiame.tumblr.com/post/30661437311/centos-6-3-pip-mysql-python-mysqldb
ということで真似してみる。
sudo yum -y install python-devel mysql-devel
ちなみにオプションの -y は全部YESにしますよってこと。
Complete!
インストール完了。そこでもう一度。
pip install mysql-python
Successfully installed mysql-python
Cleaning up...
お、できた。一応pip freeze
で確認したが問題なし。
満を持して最初のコマンドに戻ってみる。
python manage.py sql [APPNAME]
django.db.utils.OperationalError: (1049, "Unknown database 'myproject'")
あれ?できないじゃないか・・・・と思ったがよく考えたらまだデータベースを作っていないからそのせいだった。 生成はMySQL側でやらないといけない 。
実は MySQL の使い方はまだちょっとしか勉強していなくてしかも勉強したことも忘れていたので過去の自分に教えてもらった。彼もまだほんの触りしかやっていなかったようだが、ひとまず データベースの生成まで出来ればあとはDjangoが上手いことやってくれる のである意味これでちょうどいい気もする。
三度目の正直。
python manage.py sql [APPNAME]
上手くいった。