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 をインストールしたくない」
という人に使ってみてもらえると嬉しいです。
ちなみに、今までは、
という処理を初期化時に一回呼ぶと、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 でしょ?という気持ちでいっぱいです。
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