いままでDjangoでMariaDBを操作するためにmysqlclientを使用していた。
新しいWindowsで開発環境を整えようと以前と同じ方法でをインストールしてみた。
pip install mysqlclient
ところ次のエラーが出てインストールできない。
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools
書かれている通りMicrosoft C++ Build Toolsをダウンロードして必要なものをインストールしてみた。
これでpip install mysqlclient
をすると別のエラーが出る。
'mysql.h':No such file or directory
バージョンを変更したりMariaDB C Connectorをインストールしたり環境変数をいじってみたりしたが結局解決できず。
mysqlclientのドキュメントを見てみると、Windowsでビルドするのは大変だと書いているので別のドライバーを使うことに。
MySQL Connector/PythonはMySQLの公式ドライバー。
pip install mysql-connector-pythonでインストールすることができた。
pythonでテストしてみるとちゃんとMariaDBに繋げることができた。
これで解決と思いきやDjangoで開発サーバーを立ててみると新たなエラーが出る。
MySQL Connector/Python C Extension not available (No module named '_mysql_connector')
use_pureの設定をFalseにするといいらしいが直らず。
Application Development with the Connector/Python C Extension
バージョンを変更したりしたがやはり解決できず。
これまたあきらめることに。
PyMySQLはPure pythonなのですんなりとインストールすることができた。
Djangoのconfigには次のように設定する必要がある。
import pymysql...pymysql.install_as_MySQLdb()DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', ... }}
Djangoでサーバーを立ててもエラーなし。
パフォーマンス面でmysqlclientやConnector/Pythonと比べると劣るらしいけど、問題なく動作したんでひとまず解決!。