ITスキル

MySQLをインストールしてPythonで使ってみる

先日は、DMMデータをAPIで取得してツイートするプログラムを作りました。

が、全く同じ商品のリンクを複数回ツイートするとツイートエラーになります。

だから、どの商品をツイートしたのか、ツイート履歴を残して、ツイート前にチェックを入れようと思いました。

で、どうせならデータベース構築して、そこで色々管理しようと思いMySQLのインストールをしてみました。今回はそのインストール手順を残しています。動作確認で簡単なpythonプログラムも作成しています。

PCへMySQLをインストール

まずは、MySQLのインストールです。私は、Mac OSへのインストールですが、他のOSでも手順は同じです。

MySQLインストーラのページへアクセス

MySQLのサイトにアクセスして、DEVELOPER ZONEタブをクリックします。

DEVELOPER ZONEの右側の「MySQL 8.0」をクリック。私がインストールしたときは、バージョンは8.0でしたが、最新のアプリはバージョンアップしている可能性もあります。

ダウンロードするインストーラの選択

続いての画面でOSを選択してDownloadボタンをクリックします。今回は、MacOSを選択していますが、皆さんのインストール環境に合わせてください。

ダウンロードのページでは、ログインするかユーザ登録をするかの選択ボタンが表示されています。すでにアカウントを持っている方ならLoginしてください。そうでない方は、アカウントの作成は不要で、ボタン左下の次のメッセージをクリックすればユーザ登録など不要でダウンロードできます。

「No thanks, just start my download.」

MySQLインストール

インストーラがダウンロードディレクトリに生成されます。クリックするとインストーラが立ち上がりインストールが始まります。

ソフトウェアチェックのメッセージが出ますが、許可ボタンクリックしないとインストールできないので、「許可」一択になります。

そのまま、いくつかの確認事項などに印鑑を押してか

インストーラはゴミ箱へ…

インストール状況確認

MySQLの動作確認

インストールが完了したので動作確認をします。動作確認は、次の2つで実施します。

  • ターミナルからの接続確認
  • pythonからの接続確認

ターミナルからの動作確認

まずは、pythonを使わずに接続の確認をします。ついでに、pythonからアクセスするデータベースも作ってしまいます。Mac OSを使っているのでターミナルから接続の確認をします。

ターミナル起動

説明不要と思いますが、ターミナルを起動します。

MySQL起動して接続確認

次のコマンドでMySQLをrootユーザで起動します。パスワードの入力を求められるので、インストール時に設定したパスワードを使います。入力しているところは青太字で記載しています。

% /usr/local/mysql/bin/mysql -u root -p
Enter password: 

接続に成功すると、メッセージが表示されて、プロンプトが「mysql>」となれば接続成功です。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 227
Server version: 8.0.32 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

python使って動作確認

ここからは、pythonを使ってMySQLに接続して簡単なSQLを発行して動作確認をしてみます。引き続きターミナルでの作業が続きます。

動作確認用データベース作成

まず、pythonで使うデータベースを作成します。その前にMySQLインストール直後にデフォルトで生成されているデータベースを確認しています。

mysql> SHOW DATABASES;

+--------------------------------+
| Database |
+--------------------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------------------+
4 rows in set (0.02 sec)

新たに一つ「mydb」というデータベースを作成して、そこにpythonからアクセスするようにします。

mysql> create database mydb;

Query OK, 1 row affected (0.02 sec)

mysql> SHOW DATABASES;

+--------------------------------+
| Database |
+--------------------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| sys |
+--------------------------------+
5 rows in set (0.02 sec)

簡単に作成できました!!

作ったデータベースにテーブルを作成

次は作成したデータベースにテーブルを作成します。データベースを作ったばかりなので、テーブルなんてあるわけないと思いますが…とりあえず、今の状況を確認してます。

mysql> show tables;

Empty set (0.00 sec)

テスト用のテーブル「sitelist」作ります。サイト名とURLを登録するテーブルです。特に今後の作業で使うわけではないので、なんでも良いです。sqlの解説は気が向いたら別途行います。

mysql> create table sitelist(site_name varchar(10), url varchar(64));

Query OK, 0 rows affected (0.02 sec)

mysql> show tables;

mysql> show tables;
+-----------------------+
| Tables_in_mydb |
+-----------------------+
| sitelist |
+----------------------+

1 row in set (0.00 sec)

作成できました。

おすすめ

sqlをさっさと習得して副業で収入を得たいなら、スクールをお勧めします。
例えば、「テックアイエス」。

テックアイエスはSQLだけではなく、稼ぐために必要なスキルをセットで学べるので、すぐに収入につながります。

レコード追加

作ったテーブルにDMMのサイト情報を登録します。

mysql> insert into  sitelist value("DMM","https://www.dmm.com/");

Query OK, 1 row affected (0.00 sec)

mysql> select * from sitelist;

+---------------+--------------------------------+
| site_name | url                  |
+---------------+--------------------------------+
| DMM       | https://www.dmm.com/ |
+---------------+--------------------------------+

1 row in set (0.00 sec)

レコードの追加も成功です。では、これをpythonから取得してみます。ターミナル上での作業はここまで。ここからは、pythonの話です。

ライブラリMySQL Connector インストール

pythonでMYSQLに接続するライブラリ「mysql-connector-python」をインストールします。

pip installコマンドでインストールしています。難易度ゼロです。すぐに終わります。

!pip install mysql-connector-python
Collecting mysql-connector-python
  Downloading mysql_connector_python-8.0.32-py2.py3-none-any.whl (381 kB)
     |████████████████████████████████| 381 kB 5.8 MB/s eta 0:00:01
Requirement already satisfied: protobuf<=3.20.3,>=3.11.0 in /Users/horiguchitakashi/opt/anaconda3/lib/python3.9/site-packages (from mysql-connector-python) (3.19.1)
Installing collected packages: mysql-connector-python
Successfully installed mysql-connector-python-8.0.32

pythonからMySQL へ接続確認

pythonでMySQLに接続するコードを作成しています。 パスワードはgetpassライブラリを使って、コード実行時に入力するようにコーディングしています。

import mysql.connector
from mysql.connector import Error
from getpass import getpass

#接続情報登録
host_name='localhost'
user_name='root'
DB_NAME='mydb'
password=''

#パスワード入力
if password =='':
    password = getpass('your password: ')

try:
    connection = mysql.connector.connect(
        host=host_name,
        user=user_name,
        passwd=password,
        database=DB_NAME        
    )
    print("MySQL Database connection successful")
except Error as err:
    print(f"Error: '{err}'")
your password: ········
MySQL Database connection successful

上記メッセージが表示されれば、接続成功です。

レコードを取得してみる

ターミナル上で作成したレコードを抽出してみます。sitelistテーブルにDMMのサイト情報を登録したので、それを取得します。

# DB操作用にカーソルを作成
cur = connection.cursor()
ret=cur.execute('select * from sitelist')
        
# 全てのデータを取得
rows = cur.fetchall()

#取得データを表示
print(rows)
[('DMM', 'https://www.dmm.com/')]

問題なく取得できましたね。

では、次回はツイートした商品番号をMySQLのテーブルに登録するコードと、ツイートする直前に商品番号からツイート済み商品かを確認してからツイートするコードを作ってみます。

-ITスキル
-, , ,