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を実行します。
MySQLを停止するときは、コマンドbrew services stop mysql
を実行すれば、MySQLが停止します。
mysql-connector-python
次に、サードパーティーライブラリから、PythonでMySQLを扱えるmysql-connector-python
パッケージをインストールします。
一度ターミナルからpip install mysql-connector-python
を実行してみたのですが、Pycharmでは有効になっていないようなので、Preferencesからインストールします。
Pycharmのメニューから【Pycharm】→【Preferences】を選びます。
左メニューの【Project Interpreter】を選び、メインメニューの左下にある【+】をクリックします。
検索窓に【mysql】と入力して、左メニューの【mysql-connector-python】を選択し【Install Package】をクリックします。
少し時間がかかりますが、インストールが完了したら完了のメッセージが表示されます。
これでmysql
モジュールをインポートすれば、MySQLを扱うことができます。
データベースをチェック
実際にPythonからMySQLに接続するまえに、MySQLのデータベースをチェックしてみましょう。
ターミナルでbrew services start mysql
を実行して、MySQLを稼働状態にします。(※すでに稼働状態の場合、このコマンドは不要です。)
この状態で、コマンドmysql -u root
を実行してみましょう。
このコマンドは、root権限でMySQLにログインして、ターミナルからMySQLの命令を実行できる状態するコマンドです。
次にshow databases;
を実行します。
MySQLを最初に稼働させた時に作成されるデフォルトのデータベースが表示されるので、ここから新しくデータベースを作成します。
MacにインストールされたMySQLのホストは127.0.0.1
もしくはlocalhost
で、user
はroot
、password
は空の状態になっています。
なので、Pythonファイルで、コネクタを生成する際に下記のコードのように、コネクタオブジェクトを生成する際に、host
だけ指定して、user
とpassword
を指定しなくてもroot権限でログインできます
conn = mysql.connector.connect(host='127.0.0.1(もしくはlocalhost)')
といっても、セキュリティの問題があるので、最初にユーザーとパスワードを設定し、すべての権限を与えたユーザーを作成します。
ユーザーの作成
ターミナルで、MySQLを稼働し、rootでログインした状態で、create user 'ユーザー名' identified by 'パスワード';
を実行します。
これでどのホストからでもMySQLに接続できるユーザーが作成されました。
コマンドselect user from mysql.user;
を実行すれば、masteru
がuser
に追加されているのがわかります。
次に作成したユーザーに権限を与えます。
権限を与える
作成したばかりのユーザーは何も権利を与えられていないので、データベースに接続をすることはできるものの、データベースを作成したり、テーブルを作成したり、データを更新したりすることができません。
なので、データベースのすべての権限を与えてデータベースを作成できるようにします。
ターミナルでmysql>
が表示された状態で、次のコマンドを実行します。
grant all on *.* to ユーザー名(mastaru);
これでユーザー(私の場合はmasteru)にデータベースに関するすべての権限が与えられました。
与えられている権限を確認するには、次のコマンドを実行します。
show grants all for ユーザー名(mastaru);
それでは、PythonからMySQLを操作しますが、今はrootユーザーでMySQLにログインしているので、一旦ログアウトして、作成したユーザーでログインしてみます。
ログアウトは、コマンドquit
を実行すれば、MySQLからログアウトします。
続いて作成したユーザーIDとパスワードを使ってログインしますので、下記のコマンドを実行します。
mysql -u ユーザー名(masteru) -p
パスワードを要求してくるので、設定したパスワードを入力してエンターキーを押します。
データベースに関する権限を全て与えて新しく作成したユーザーでMySQLにログインしているので、いろいろなことができます。
これまでに実行したデータベースを参照するコマンドやユーザーを作成するコマンドを実行してみてください。
ちなみにユーザーを作成したあと、ユーザーを削除するコマンドは、drop user ユーザー名;
なので、このコマンドも試してみるといいでしょう。
ここまでMySQLをターミナルで操作してきましたが、コマンドに関して参考にさせてもらったサイトがこちら。
データベースを作ったり、削除したり、ユーザーを作成したり、削除したりすることができるので、コマンドを使ってMySQLで遊んでみてください。
楽しむと時間を忘れる
新しいことを学習するときは、どうしても時間がかかります。
そして、それに没頭すると時間を忘れてしまいます。
私自身、WordPressの運用でデータベースを引っ越したり、一括変換をMySQLのコマンドで実行したりしたことはありましたが、最小限必要なことだけしかしていないので、全く理解できていませんでした。
今回PythonからMySQLを扱うために、一から学習していると、ほんとわからないことだらけでここまで学習するのにめちゃくちゃ時間がかかってしまいました。
なので今日はこのへんで終了して、PythonからMySQLを操作するコードを書くのは、明日に伸ばしたいと思います。
ということで、明日も元気にGood Python!