【Python】MySQLを扱う方法【データベース】

アイキャッチ画像
  • MySQLを利用するには?
  • PythonでMySQLを扱ってデータベースを操作するには?

本記事ではこのような疑問を解決します。


Pythonにおけるデータベース操作のやり方はいくつかありますが、
今回はMySQLを扱ったデータベース操作の方法を解説します。

MySQLをインストールする

まずはMySQLをインストールします。

MySQLのインストールについてはmacOSやLinuxであればパッケージ管理ツールから、
WindowsであればMySQL公式サイトから行うのが一般的でしょう。

今回はmacOSを想定してHomebrewでインストールを行います。

$ brew install mysql

インストール後、ターミナルにて以下のコマンドを実行し、バージョンが出力されればOKです。

$ mysql -V
mysql  Ver 8.0.31 for macos12.6 on x86_64 (Homebrew)

※バージョン等は各自合ったものをご利用ください。

MySQLを起動する

以下のコマンドを実行してMySQLを起動します。

$ mysql.server start
Starting MySQL
SUCCESS! 

起動後、デフォルトで用意されているrootユーザーでログインし、中身を確認していきます。

$ mysql -u root

ログインすると以下のような対話モードになるため、
以後、この対話モードでいくつか操作を行なっていきます。

mysql> 

試しにデータベース一覧を出力してみると以下の通りです。

mysql> show databases;

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

Pythonライブラリをインストールする

次にPythonでMySQLを扱うためのライブラリをインストールします。

$ pip install mysql-connector-python

PythonからMySQLへ接続する

下記の記述でMySQLに接続できます。

import mysql.connector


# 今回はrootユーザーでログインする。
conn = mysql.connector.connect(host='127.0.0.1', user='root', password='')

conn.close()

ちなみに、with句を使って下記のように記述しても良いでしょう。

import mysql.connector


with mysql.connector.connect(host='127.0.0.1', user='root', password='') as conn:

データベースを作成する

まずは利用するデータベースを作成しましょう。

import mysql.connector


# 今回はrootユーザーでログインする。
conn = mysql.connector.connect(host='127.0.0.1', user='root', password='')

curs = conn.cursor()

curs.execute('CREATE DATABASE my_database')

curs.close()

conn.close()

MySQLの対話モードでデータベースが作成できているか確認してみましょう。

mysql> show databases;

+--------------------+
| Database           
+--------------------+
| information_schema       
| my_database   
| mysql              
| performance_schema 
| sys                   
+--------------------+
5 rows in set (0.00 sec)

「my_database」という名前でデータベースが作成されていることを確認できます。

なお、作成したデータベースを選択して操作できるようにしておきましょう。

mysql> use my_database;

テーブルを作成する

ここからは先ほど作成した「my_database」データベースを使用していきます。

そして、このmy_databaseの中に「users」という名前でテーブルを作成します。

usersテーブルはidカラムとnameカラムを持つこととします。

import mysql.connector


conn = mysql.connector.connect(host='127.0.0.1',
                               user='root',
                               password='',
                               database='my_database')

curs = conn.cursor()

curs.execute("""CREATE TABLE users(
                id INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
                name VARCHAR(32) NOT NULL)""")

curs.close()

conn.close()

MySQLの対話モードでテーブルが作成できているか確認してみましょう。

mysql> show tables;

+-------------------------+
| Tables_in_test_database 
+-------------------------+
| users                   
+-------------------------+
1 row in set (0.00 sec)

「users」という名前でテーブルが作成されていることを確認できます。

レコードを操作する

ここから作成したusersテーブルの中で実際にCRUD処理を行なっていきます。

なお、これから説明していくコードの前後には下記の記述があることを前提とします。

import mysql.connector


conn = mysql.connector.connect(host='127.0.0.1',
                               user='root',
                               password='',
                               database='my_database')

curs = conn.cursor()

# ===================================================================================
# この中(これから説明していくコード)
# ===================================================================================

curs.close()

conn.close()

レコードを追加する

「user1」というnameカラムを持つレコードを追加します。

curs.execute('INSERT INTO users(name) values("user1")')

# データベースへ反映させるためにコミットが必要。
conn.commit()

レコードを全件取得する

usersテーブルのすべてのレコードを取得します。

curs.execute('SELECT * FROM users')

# fetchall()は中身を全て取得するメソッド
print(curs.fetchall())
# => [(1, 'user1')]

レコードを更新する

「user1」というnameカラムを持つレコードを「user2」というnameに更新します。

curs.execute('UPDATE users set name = "user2" WHERE name = "user1"')

conn.commit()

レコードを削除する

「user2」というnameカラムを持つレコードを削除します。

curs.execute('DELETE FROM users WHERE name = "user2"')

conn.commit()

まとめ

以上がPythonでMySQLを扱う方法になります。

今回はPythonでMySQLを扱う初歩を解説しましたが、
もっと様々なSQL文を使うことで自由自在にデータベースを操作することが可能です。

SQL文も学んでぜひいろいろな操作を試してみてください!