Python Pycharm MySQL

Python学習【365日チャレンジ!】140日目のマスターU(@Udemy11)です。

青物(ハマチなど)が釣れているという情報をキャッチしたので、早起きしてでかけていったのですが、今日は留守だったようで、全く反応がありませんでした。

周りで釣っている人も結構いましたが、私が見渡せる範囲で釣れている人はいませんでした。

数日前までは釣れていたのかもしれませんが、海のものだけに、釣りも水ものですね。

それでは、Python学習をはじめましょう。

昨日の復習

昨日は、中小規模のデータベースを扱えるSOLiteについて学習しました。

SQLiteはサーバーを用意することなく、単一ファイルでデータベースを手軽に扱えるのが特徴で、しかも基本的な使い方は他のSQLデータベースと同じなので、非常に汎用性のあるデータベースでした。

ファイルに保存するのではなく、メモリーにデータベースを作成して、コードをテストすることもできました。

SQLiteの詳細については昨日の記事をごらんください。

今日は、MySQLについて学習しましょう

MySQLのインストール

SQLiteはPythonistaのディレクトリにデータベースファイルを作成して実行することができましたが、MySQLをPythonista(iPhone)にはインストールできませんでした。

それなら、外部のMySQLデータベースを使えばいいやと思って、使っているレンタルサーバーのデータベースを活用しようと思いきや、セキュリティの関係で、自社サーバー以外からデータベースへのアクセスを拒否しているとのことで、今回は、MacのPycharmですすめていきます。

まずは、MySQLのインストールですが、昨日紹介したHomebrewをインストールして、MySQLサーバーを入れていきます。

Homebrewのインストールはターミナルで次のコマンドを実行します。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

インストールが完了すれば、MySQLをインストールします。

同じくターミナルで、コマンドbrew install mysqlを実行します。

Homebrewにアップデートがあれば、先にアップデートしたあと、MySQLがインストールされます。

MySQLのインストールが完了すれば、コマンドbrew services start mysqlを実行して、MySQLを実行します。

Python Pycharm MySQL

MySQLを停止するときは、コマンドbrew services stop mysqlを実行すれば、MySQLが停止します。

mysql-connector-python

次に、サードパーティーライブラリから、PythonでMySQLを扱えるmysql-connector-pythonパッケージをインストールします。

Python Pycharm MySQLインストール

一度ターミナルからpip install mysql-connector-pythonを実行してみたのですが、Pycharmでは有効になっていないようなので、Preferencesからインストールします。

Pycharmのメニューから【Pycharm】→【Preferences】を選びます。

Python Pycharm MySQL

左メニューの【Project Interpreter】を選び、メインメニューの左下にある【+】をクリックします。

Python Pycharm MySQL

検索窓に【mysql】と入力して、左メニューの【mysql-connector-python】を選択し【Install Package】をクリックします。

Python Pycharm MySQL

少し時間がかかりますが、インストールが完了したら完了のメッセージが表示されます。

Python Pycharm MySQL

これでmysqlモジュールをインポートすれば、MySQLを扱うことができます。

データベースをチェック

実際にPythonからMySQLに接続するまえに、MySQLのデータベースをチェックしてみましょう。

ターミナルでbrew services start mysqlを実行して、MySQLを稼働状態にします。(※すでに稼働状態の場合、このコマンドは不要です。)

Python Pycharm MySQL

この状態で、コマンドmysql -u rootを実行してみましょう。

Python Pycharm MySQL

このコマンドは、root権限でMySQLにログインして、ターミナルからMySQLの命令を実行できる状態するコマンドです。

次にshow databases;を実行します。

Python Pycharm MySQL

MySQLを最初に稼働させた時に作成されるデフォルトのデータベースが表示されるので、ここから新しくデータベースを作成します。

MacにインストールされたMySQLのホストは127.0.0.1もしくはlocalhostで、userrootpasswordは空の状態になっています。

なので、Pythonファイルで、コネクタを生成する際に下記のコードのように、コネクタオブジェクトを生成する際に、hostだけ指定して、userpasswordを指定しなくてもroot権限でログインできます

conn = mysql.connector.connect(host='127.0.0.1(もしくはlocalhost)')

といっても、セキュリティの問題があるので、最初にユーザーとパスワードを設定し、すべての権限を与えたユーザーを作成します。

ユーザーの作成

ターミナルで、MySQLを稼働し、rootでログインした状態で、create user 'ユーザー名' identified by 'パスワード';を実行します。

Python Pycharm MySQL

これでどのホストからでもMySQLに接続できるユーザーが作成されました。
コマンドselect user from mysql.user;を実行すれば、masteruuserに追加されているのがわかります。

Python Pycharm MySQL

次に作成したユーザーに権限を与えます。

権限を与える

作成したばかりのユーザーは何も権利を与えられていないので、データベースに接続をすることはできるものの、データベースを作成したり、テーブルを作成したり、データを更新したりすることができません。

なので、データベースのすべての権限を与えてデータベースを作成できるようにします。

ターミナルでmysql>が表示された状態で、次のコマンドを実行します。

grant all on *.* to ユーザー名(mastaru);

これでユーザー(私の場合はmasteru)にデータベースに関するすべての権限が与えられました。

与えられている権限を確認するには、次のコマンドを実行します。

show grants all for ユーザー名(mastaru);

Python Pycharm MySQL ユーザーに権限を与える

それでは、PythonからMySQLを操作しますが、今はrootユーザーでMySQLにログインしているので、一旦ログアウトして、作成したユーザーでログインしてみます。

ログアウトは、コマンドquitを実行すれば、MySQLからログアウトします。

続いて作成したユーザーIDとパスワードを使ってログインしますので、下記のコマンドを実行します。

mysql -u ユーザー名(masteru) -p

パスワードを要求してくるので、設定したパスワードを入力してエンターキーを押します。

Python Pycharm MySQL ログイン

データベースに関する権限を全て与えて新しく作成したユーザーでMySQLにログインしているので、いろいろなことができます。

これまでに実行したデータベースを参照するコマンドやユーザーを作成するコマンドを実行してみてください。

ちなみにユーザーを作成したあと、ユーザーを削除するコマンドは、drop user ユーザー名;なので、このコマンドも試してみるといいでしょう。

ここまでMySQLをターミナルで操作してきましたが、コマンドに関して参考にさせてもらったサイトがこちら。

データベースを作ったり、削除したり、ユーザーを作成したり、削除したりすることができるので、コマンドを使ってMySQLで遊んでみてください。

楽しむと時間を忘れる

新しいことを学習するときは、どうしても時間がかかります。

そして、それに没頭すると時間を忘れてしまいます。

私自身、WordPressの運用でデータベースを引っ越したり、一括変換をMySQLのコマンドで実行したりしたことはありましたが、最小限必要なことだけしかしていないので、全く理解できていませんでした。

今回PythonからMySQLを扱うために、一から学習していると、ほんとわからないことだらけでここまで学習するのにめちゃくちゃ時間がかかってしまいました。

なので今日はこのへんで終了して、PythonからMySQLを操作するコードを書くのは、明日に伸ばしたいと思います。

ということで、明日も元気にGood Python!