- 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文も学んでぜひいろいろな操作を試してみてください!