SSブログ

Django CyMysql backend の Django 2.0 対応 [Python]

この記事はDjango Advent Calendar 2017 https://qiita.com/advent-calendar/2017/django の4日目の記事です。

Python の mysql 用データーベースドライバーってたくさんあるのですが、CyMySQL https://github.com/nakagami/CyMySQL も、そんな(マイナーな)ドライバーのひとつです。

PyMySQL https://github.com/PyMySQL から fork したもので、Cython がインストールされていれば速く、インストールされていなくても pure python で、それなりに動く、というものです。

Django に対する、CyMySQL 用のデーターベースバックエンドもリリースしていたのですが、Django 2.0 のリリースにともなって、 Django 2.0 用の CyMySQL 用のデーターベースバックエンドをリリースしました。

https://pypi.python.org/pypi/django-cymysql/2.0.0

pip install cymysql django-cymysql で、cymysql と django-cymysql をインストールして、settings.py の DATABASE の ENGINE に django.db.backends.mysql の代わりに mysql_cymysql と入力すると使えます。

django.db.backends.mysql + mysqlclient と比べて機能面で良いところというのはないんですが、
「なんかよくわからないけど mysqlclient のインストールがうまくいかないので django.db.backends.mysql が使えない」
「ビルドするためのコンパイラや libmysqlclient-dev をインストールしたくない」
という人に使ってみてもらえると嬉しいです。


ちなみに、今までは、
import pymysql
pymysql.install_as_MySQLdb()

という処理を初期化時に一回呼ぶと、Django で PyMySQL が使えるという技があったんですが、
https://stackoverflow.com/questions/34777755/how-to-config-django-using-pymysql-as-driver
Django 2.0 のコードの中で mysqlclient のバージョンを判定しているところが入ってしまったので、ソースコードそのままでは動かなくなりました。
(いやいや、その判定いらんやろ)
それで、PyMySQL のバージョン番号がちっちゃすぎるからなんとかしようぜという Issue が、PyMySQL のプロジェクトに上がってて、 https://github.com/PyMySQL/PyMySQL/issues/610
・・・え、そっち?直すなら Django でしょ?という気持ちでいっぱいです。

コメント(0) 
共通テーマ:日記・雑感

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント