mysqlclient が Django の推奨ドライバになりました

MySQL-Python (MySQLdb) のメンテナンスが停滞したことで fork して後方互換性を保ったままメンテナンスをしている mysqlclient ですが、 Django の recommend になりました。

Databases | Django documentation | Django

もともと推奨になっていた MySQLdb が Python 3 をサポートしないままメンテナンスが停滞していることが問題になり、対立候補が MySQL Connector/Python と mysqlclient でした。 Oracle 公式の安心感(僕個人が片手間にやってるよりは圧倒的に開発リソースを避けるはず)も捨てがたいのですが、クエリ結果のカラム数×行数(=MySQLパケット数)が多い時に Pure PythonMySQL Connector/Python と libmysqlclient をラップしている mysqlclient だと明確な性能差があるために mysqlclient 側が推奨になりました。

今後は、 mysqlclient は互換性を重視して bugfix のみ、 PyMySQL は非同期プログラミングのサポートの追加をしていき、MySQL-Connectory/Python には PyPy でのパフォーマンス向上を pull request していこうと思っています。

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