mysql
mysql-connector-python を使えば簡単なのですが、あえて mysqlclient を使う場合の話です。 まず、Pythonの公式DockerイメージはDebianベースになっていますが、Debianではデフォルトではapt-getでMySQLをインストールできません。 (Debian sid では MySQL …
MySQL 8.0がutf8mb4のデフォルトcollationを utf8mb4_0900_ai_ci に変更したことは有名です。 MariaDBも11.5からデフォルトcollationを変更したのですが、 utf8mb4_0900_ai_ci ではなく utf8mb4_uca1400_ai_ci になりました。 この2つのcollationについてはM…
Python 3.13 を PyMySQL のCIに追加したら、次のようなエラーが発生した。 "Can't connect to MySQL server on '127.0.0.1' ([SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Missing Authority Key Identifier (_ssl.c:1018))" 調べてみると…
MariaDB 11.4 がGAになり、SSLが自動で有効になるようになりました。合わせてMariaDB Connector/Cも3.4からデフォルトでSSLを利用し、かつサーバーの証明書を検証するようになりました。 これにより、MariaDB Connector/C 3.4以降のライブラリを利用してMySQ…
mysqlclient の Windows 版バイナリ wheel を作るために、以前は MySQL Connector/C を使っていたのですが、しばらく問題があって利用できませんでした。 static link library が提供されない ビルドの仕方がよくわからん。ドキュメントもない。 TLS と sha2…
MySQL 8 が GA になってたときは MySQL がどういうつもりなのかいまいち分からなかったのですが、 8.0.13 リリースを機に改めて調べてみたらこんな感じでした。 従来の MySQL Connector/C は単体提供されない。サーバーをインストールしたらついてくる。 MyS…
このブログでも数回紹介していたとおり、今メジャーな Python の MySQL ドライバ3つのうち2つ (MySQL-python の fork の mysqlclient と PyMySQL) を僕がほぼ単独でメンテナンスしている状況でした。 メンテナンスしているといっても、両方とも MySQL-python…
MySQL-Python (MySQLdb) のメンテナンスが停滞したことで fork して後方互換性を保ったままメンテナンスをしている mysqlclient ですが、 Django の recommend になりました。 Databases | Django documentation | Django もともと推奨になっていた MySQLdb …
PyMySQL をベースに Tornado をサポートした Tornado-MySQL をリリースしました。 Github: https://github.com/PyMySQL/Tornado-MySQL PyPI: Tornado-MySQL 0.2 : Python Package Index 単に IO 部分を Tornado に置き換えるだけでなく、簡単なコネクション…
libmysqlclient を利用した Python の MySQL ドライバである libmysqlclient-python を、 gevent, meinheld など非同期I/O + 軽量スレッド環境で使いやすいようにしました。 libmysqlclient の API について libmysqlclient は基本的に同期IOのことしか考え…
前回の記事で しかし、長年の実績がある本家といえども、個人プロジェクトで、1年に数回しかコミットされてない現状です。 一応、「いま転職直後で時間ないんだけど、できれば週末に見ておくよ」という感じのレスを貰ったのでしばらく待ってみますが、進展…
去年10月に Python 3 の MySQL ドライバ事情 という記事で次のように書いていました。 多分デファクトスタンダードな MySQLドライバなのですが、現状リリースされている 1.2.4 では Python 3 対応ができていません。 Fork の MySQL-for-Python3 が推奨されま…
libmysqlclient を static リンクする方法 を紹介したばかりですが、 MySQL 5.6 だとこの方法でビルドしても Import エラーになるという報告がありました。 static link は動的ライブラリの検索パスを考えなくて良くなる代わりに、動的ライブラリなら芋づる…
ディストリのものではなくて Oracle からダウンロードした MySQL を使う場合など、 そのままでは libsqlclient_r.so が動的リンクできない場合の解決策の一つとして、 static link してしまうという方法があります。 MySQL-python の場合、 pip install を諦…