Python 3 の MySQL ドライバ事情

Python 3.3 の現状の MySQL 事情ってだいぶ解りにくいので、 MySQL-python と PyMySQL についてまとめておきます。

MySQL Connector/Python とかも Python 3 対応しているはずですが使ってないので知りません。

MySQL-python

多分デファクトスタンダードMySQLドライバなのですが、現状リリースされている 1.2.4 では Python 3 対応ができていません。

Fork の MySQL-for-Python3 が推奨されます。

PyMySQL

一応、この前リリースした PyMySQL 0.6 で動くはずです。

速度的には CPython で使う文には MySQL-python の方が速いはずなので、そっちを使ったほうがいいです。

また、 PyMySQL 0.6 はプロトコル仕様みながら結構書き換えたので人柱要素もあります。 Travis でもローカルでもテストしてるのですが、対象となる MySQLのバージョンを複数用意できてないので、 MySQL-proxy とか、 MySQL 5.0 系で認証に失敗するというエラー報告が上がってきて対応してたりします。

このへんは、やはり libmysqlclient 使う MySQL-python の方が安定している感じです。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。