牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Django で ささっと MySQL 使う場合のメモ

※ 追記:DEFAULT CHARACTER SET utf8;
※ 修正:pasword変更、 port selectの記述を追加

[Pytho2.7, Django1.4, MacOSX10.8 (Python, pip, MySQLMacPorts でインストール済)]

ささっと実験的なDjangoのプロジェクトを作ろうとしたら、想定外に問題発生したのでメモ

MySQL ユーザとDB作成

$ mysql -u root -p

CREATE DATABASE dbname DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'localhost';

SELECT user,host FROM mysql.user;
SHOW DATABASES;
SHOW VARIABLES LIKE 'port';

quit;
パスワード変更する場合
SET PASSWORD FOR 'username'@'localhost' = PASSWORD('new_password');

setting.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbname',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

問題発生

runserver したら

$ python manage.py runserver
:
Error loading MySQLdb module: No module named MySQLdb
:

なので mysql-python をインストールしてみるが

$ sudo pip-2.7 install mysql-python
:
EnvironmentError: mysql_config not found
:

またエラー

原因と解決策

Macportsmysqlをイストールすると mysql_config5 とかなる。
なのでシンボリックリンクでリネーム

$ sudo ln -s /opt/local/bin/mysql_config5 /opt/local/bin/mysql_config

再び mysql-python をインストールしてみる

$ sudo pip-2.7 install mysql-python
:
Successfully installed mysql-python
Cleaning up...
$ python manage.py runserver

オケ

参考リンク

と思ったけど port select でよいかも

追記: 2013-09-17
シンボリックリンクぢゃなくてこっちかも

$ sudo port select mysql mysql55