ほぼPython

Not技術ブログBut勉強ブログ 内容には誤りがあることが多いです

PythonとMySQLを接続しようと思ったら遠回りしてしまい苦労した話

Pythonでデータベースを使う必要が出てきました。

 

そこで、とりあえず、MySQLとつなげてみようと思い、MySQLのインストールから始めました。最終的にはPythonからデータベースをいじることに成功しましたが、結構遠回りしたので、せっかくなのでまとめておきます。

 

合計所要時間は100分です。遠回りにかかった時間は60分です。

きっと遠回りしなければ、1時間もかかりません・・・。

 

MySQLのダウンロード・インストール

MySQLのダウンロードおよびインストール、その後のPATH通しなどは以下のサイトを参考に、ハマることなく、終えました。

このサイト、信じられないほどわかりやすかったです。

 

 

MySQLのインストールとPATH通しが終わったら、さっそくデータベースを作ってみました。

 

データベースを作成

まず、コマンドプロンプトからmysqlに接続します。

mysql -u root -p

 

データベースを作成します。今回、名前はsampleとしました。

create database sample;

 

データベースにテーブルを作成します。今回はpersonというテーブルを1つだけ作成しました。ちなみに、「id」のデータ型はint型、「name」データ型はvarchar(20)型を指定しています。

create table sample.person(id int, name varchar(20));

 

テーブルが作成できているか確認します。テーブルを表示します。

show tables from sample;

 

作成したテーブルにデータを挿入します。

insert into person(id,name) values(1453 ,'Yanagi');

 

テーブルのデータを表示します。無事、データが入っています。

select *from sample.person;

 

僕は、これで満足したのですが、ユーザーというのも作成する必要があるようです。 

 

ユーザーの作成

create user hoge@localhost IDENTIFIED BY 'password';

 

ユーザーの権限の設定

grant all on sample.* TO hoge@localhost;

 

これで、MySQLの方は終わりました。たぶんここまで30分くらいでした。

 

Pythonとの接続(失敗した手順)

さて、MySQLはいい感じだったので、Pythonから操作するというメインの部分にとりかかりました。

 

まず、ググったら mysqlclient というモジュールが良いと出てきました。そのため、このモジュールのインストールを以下のように試みました。

pip install mysqlclient

しかし、エラーが出ました。

 

エラーメッセージ:

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": url

 

 そこで、【python】ライブラリインストール時に「error: Microsoft Visual C++ 14.0 is required.」エラーが発生を参考にエラーの対処に取り掛かりました。

 

しかし、その後もcl.exeが無い?と言ったようなエラーが出ました。(エラーメッセージは消してしまいました・・・)

 

ここまで来て、このまま突き進むのは良くないと感じ、別の方法を調べました。

 

すると、mysqlclientがWindowsでインストールできない | coffee break designs.というページに行き付きました。

このページを参考にwhlファイルを直接ダウンロードし、それを利用してインストールしようと試みました。

 

しかし、ここでもまたエラーが。

 

エラーメッセージ:

●● is not a supported wheel on this platform.

 

どうやら、whlファイルにはいくつか種類?があり、対応しているものを選ばないといけなかったようです。

 

qiita.com

 

ここに載っている方法で対応しているタイプを調べました。

 

これでwhlファイルがあるフォルダに移動し

pip install ファイル名.whl

 

 とすることで、無事、mysqlclientのインストールに成功しました。

 

ここに至るまでに60分・・・

しかし・・・!!

 

実際にPythonからこのモジュールを使おうとするとエラーが発生しました・・・。

 

エラーメッセージ:

_mysql_exceptions.OperationalError: (2059, <NULL>)

 

調べてみると、こんな回答が。

stackoverflow.com

僕の場合にも当てはまるかわかりませんが、この回答者はMySQLをダウングレードしたら使えるようになったそうです。MySQLのダウングレードはまたいろいろとハマりそうだと思い、ここにきて別のモジュールを使おう・・・と思いました。

 

Pythonとの接続(成功した手順)

このページを参考に進めたら、どこにもハマることなく10分でPythonからMySQLを操作することに成功しました・・・。

www.sejuku.net

 

まとめ

結果的には、間違った方向へ進んでしまいかなりの時間を無駄にしてしまいました。

 

しかし、whlファイルを使ったインストールなど、新しい方法を知ることもできて勉強になりました。

 

そしてバズワードと侍エンジニア塾ブログは非常にわかりやすかったです。

 

今後、データベースを使ったものを作っていきたいと思います。

 

ここまで読んでいただきありがとうございました。