1. ホーム
  2. python

[解決済み] MySQLdb, mysqlclient, MySQL connector/Python の違いは何ですか?

2022-08-01 01:35:24

質問

Pythonでデータベースの更新をしようとしているのですが、開発環境を整えているときに、以下の3つに出くわしてしまい、めまいがしています。

  1. そこには MySQLdb

  2. そこには mysqlclient

  3. そして、その後に mysql コネクタ python

それぞれ、何が違うのか、どこで使うのか?ありがとうございます。

どのように解決するのですか?

MySQLdb は、MySQL データベースの API を実装した C モジュールの薄い Python ラッパーです。

以前は MySQLDb1 バージョンのラッパーがありましたが、現在はレガシーと見なされています。MySQLDb1が進化し始めると MySQLDb2 に進化し、バグフィックスと Python3 のサポートが行われたため、MySQLDb1 がフォークされ、以下がその方法です。 mysqlclient がバグフィックスと Python3 サポート付きで登場しました。まとめると、MySQLDb2 は実稼働にはまだ早い、MySQLDb1 は古いドライバ、そしてコミュニティがバグフィックスと Python3 サポートを行った mysqlclient となります。

さて、このような混乱を解決するために、MySQL は独自のバージョンの MySQL アダプタを提供しています。 mysql コネクタ でMySQLのAPIを使用するオールインPythonモジュールです。 C モジュールに依存しない で、標準的なPythonモジュールだけが使用されています。

つまり、問題は mysqlclient と mysql connector のどちらを使うかです。

私としては、公式にサポートされているライブラリのほうを選びますが mysqlclient も同様に良い選択でしょう。 どちらも、ここ数日の活発なコミットでわかるように、修正と新機能で活発に更新されています。

注:私はあまり経験がないので、どちらかがあなたのニーズに合わない場合があるかもしれません。両ライブラリは PEP-249 規格に準拠しています。つまり、少なくとも基本的な機能はどこでも問題ないはずです。

インストールと依存関係

  • mysqlclient

C wrapper のフォークとして、MySQL で動作するために C モジュールを必要とし、これらの拡張を構築するために python ヘッダファイルを追加します (python-dev をお読みください)。インストールは使用するシステムに依存しますが、パッケージ名を認識し、インストールできることを確認してください。