前回、軽量型のデータベースで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文にはたくさん命令があります。
命令の詳細は別サイトをご確認ください。
サンプルプログラム
こちらの記事で作成したプログラムはGitHub環境にアップしております。
下記からダウンロードいただけます。