ModuleNotFoundError: No module named ‘MySQLdb’ エラー

Python で MySQL(MariaDB)を利用するとエラー

Python で MySQL(MariaDB)を操作する際に、mysqlclient を利用しようとして以下のようなエラーが発生しました

ModuleNotFoundError: No module named 'MySQLdb'

これは、MySQLdb モジュール(mysqlclient)がインストールされていないために発生します。Python 3では MySQL-python は非推奨になっています。そのため、代わりに mysqlclient を使用するのが一般的です。

MariaDB 環境での正しい mysqlclient のインストール手順

「mysqlclient」を導入する場合は、以下のコマンドでインストールできますが、エラーが発生する場合はインストールに必要なパッケージが不足しているのでインストールする必要があります

$ pip3 install mysqlclient

「pip3 install mysqlclient」でエラーになった場合は、下記のコマンドで必要なパッケージをインストールしてからインポートします

# 必要なパッケージをインストール
$ sudo dnf install python3-devel mariadb-connector-c mariadb-connector-c-devel -y

# mysqlclient をインストール
$ pip3 install mysqlclient

MySQL 環境での正しい mysqlclient のインストール手順

MySQLでも、「pip3 install mysqlclient」でインストールしますが、必要なパッケージが異なりますので事前に必要なパッケージをインストールしてからインストールします

# 必要なパッケージをインストール
$ sudo dnf install  mysql-libs  mysql-common

# mysqlclient をインストール
$ pip3 install mysqlclient

mysql-libs と mariadb-connector-c の違い

MySQL と MariaDB では利用するクライアントライブラリが異なります。

パッケージ 説明 MySQL/MariaDB どちら向け?
mysql-libs Oracle MySQL のクライアントライブラリ MySQL 向け(MariaDB 非推奨)
mysql-common MySQL の共通ライブラリ MySQL 向け(MariaDB 非推奨)
mariadb-connector-c MariaDB 用のクライアントライブラリ MariaDB 向け(推奨)
mariadb-connector-c-devel MariaDB クライアント開発用ライブラリ MariaDB 向け(推奨)

MariaDB 環境で mysql-libsmysql-common をインストールすると、依存関係の競合が発生する可能性があります。
そのため、MariaDB を使っている場合は mariadb-connector-c を利用することが推奨されます。

MySQLの場合は、mysql-libs, mysql-common を利用することが推奨されます

スポンサーリンク

0
0