【Python】MySQLを使って情報を保管してみよう!

Pythonロゴ

前回、軽量型のデータベースでSQLiteを使ってみました。
今回はWebサービスなどで利用するMySQLデータベースを使っていきます。

MySQLとは?

MySQL(マイ・エスキューエル)はオープンソースのリレーショナルデータベースシステムの1つです。活用用途はWebサービスから基幹システムまで幅広く多くの企業が利用しています。
対応OSも幅広くWindows, Mac, Linuxと多くで利用できます。
昔はサン・マイクロシステムズ社が開発していましたが、2010年にオラクル社が買収をおこない現在にいたります。

必要モジュール

MySQLをPythonで利用する場合、サードパーティー製のモジュールが必要になります。mysql-connector-pythonをインストールします。

pip install mysql-connector-python

※私はDockerにモジュールを入れています。

基本操作

コネクションのオープンとクローズ

データベースに接続する際、コネクション(接続)を確立する必要があります。
下記操作にてコネクションまでを行います。
データベースは利用が終わるとクローズ(解放)を行います。クローズ忘れをするとコネクションが残りキャパシティオーバーで接続できない原因になりますので注意が必要です。

import mysql.connector

db_connect = mysql.connector.connect(
    host='ホストIP or ドメイン',
    port='ポート番号',
    user='アカウントID',
    password='パスワード',
    database='データベース名'
)
db_connect.close()

テーブルの新規作成

データベースの中にはデータを保管する表が必要になります。
プログラムの中ではカーソルを呼び出して作業する指示(SQL)を与えてコミットにて処理を実行します。

import mysql.connector

db_connect = mysql.connector.connect(
    host='172.20.0.2',
    port='3306',
    user='root',
    password='root',
    database='mysql_test'
)

# カーソル呼び出し
db_curs = db_connect.cursor()

# テーブル作成の命令をSQLにて指示
sql = 'CREATE TABLE users(id int NOT NULL AUTO_INCREMENT, name1 varchar(20), name2  varchar(20), PRIMARY KEY (id))'
db_curs.execute(sql)

# 実行
db_connect.commit()

db_connect.close()

Databaseウィンドウで確認したところテーブルが作成されていました。

テーブルにデータを挿入

作成したデータベースに情報を挿入します。
挿入はSQL文の INSERT を利用します。

import mysql.connector

db_connect = mysql.connector.connect(
    host='172.20.0.2',
    port='3306',
    user='root',
    password='root',
    database='mysql_test'
)
db_curs = db_connect.cursor()

# データ挿入の命令をSQLにて指示
sql = 'INSERT INTO users(name1, name2) values ("OSAKA", "TARO")'
db_curs.execute(sql)

db_connect.commit()
db_connect.close()

Databaseウィンドウで確認したところテーブルに情報が挿入されていました。

テーブルのデータを変更

保存した情報を変更します。変更はSQL文の UPDATE を利用します。
変更箇所は挿入時のSQLを変更して行います。

# データ挿入の命令をSQLにて指示
sql = 'UPDATE users SET name2="ZIROU" WHERE id = 1'
db_curs.execute(sql)

テーブルのデータを削除

保存した情報を削除します。削除はSQL文の DELETE を利用します。
変更箇所は挿入時のSQLを変更して行います。

# データ挿入の命令をSQLにて指示
sql = 'DELETE FROM users WHERE id = 1'
db_curs.execute(sql)

テーブルのデータを参照

テーブルに保存されている情報を参照します。
参照はSQL文の SELECT を利用します。

import mysql.connector

db_connect = mysql.connector.connect(
    host='172.20.0.2',
    port='3306',
    user='root',
    password='root',
    database='mysql_test'
)
db_curs = db_connect.cursor()

# データ参照の命令をSQLにて指示
sql = 'SELECT * FROM users'
db_curs.execute(sql)

# 参照データを表示
print(db_curs.fetchall())

db_connect.close()

# 結果
# [(1, 'OSAKA', 'TARO')]

その他SQL処理に関して

データベースのSQL文にはたくさん命令があります。
命令の詳細は別サイトをご確認ください。

参考 SQLの基礎を総まとめQiita

サンプルプログラム

こちらの記事で作成したプログラムはGitHub環境にアップしております。
下記からダウンロードいただけます。

参考 msql.py スクリプトGitHub python-beginner