アルパカDiary Pro

はてなブログProではありません

SQLAlchemy+MySQLでマルチバイト扱ったら文字化けた時の対応

マルチバイト扱ってたら以下のようなエラーが発生。

Failed to update model. 'latin-1' codec can't encode character u'\u3042' in position 15: 


接続するときのコードはこんな感じ。
DBもクライアントもutf8指定してるのになーって感じ。

DSN = 'mysql://user@localhost/db_dayo'
engine = create_engine(DSN, encoding='utf-8')


結論から言うと、DSNに追加オプションを指定することで回避できた。

DSN = 'mysql://user@localhost/db_dayo'
OPTION = 'charset=utf8&use_unicode=1'
engine = create_engine(DSN + '?' + OPTION, encoding='utf-8')