MySQLデータベースの基本的な操作方法について説明します。
1. 使用前の準備
MySQL 8.0をインストールし、pymysqlライブラリをセットアップしてください。接続テストを行う際に問題が発生した場合は以下のコマンドで確認できます:
mysql -uroot -p # MySQLサーバーにrootユーザーとして接続するためのコマンド。
2. データベース接続の基本ステップ
2.1 基本ステップ
- 接続オブジェクトを作成します。connect()メソッドを使用してconnオブジェクトを宣言します。
- カーソルを取得します。cursor()メソッドを使用します。
- SQL文を実行します。execute()メソッドを使用します。
- カーソルを閉じます。
- 接続を閉じます。
import pymysql
conn = pymysql.connect(host='localhost', user='admin', passwd='secure123', port=3306)
cursor = conn.cursor()
sql = "SELECT VERSION()"
cursor.execute(sql)
data = cursor.fetchone()
print('DBバージョン:', data)
cursor.close()
conn.close()
2.2 connect()メソッドのパラメータ簡略化
# mysql_config.py
db_config = {
'host': 'localhost',
'user': 'admin',
'passwd': 'secure123',
'port': 3306,
}
# main.py
from mysql_config import db_config
conn = pymysql.connect(**db_config)
3. データベースとテーブルの作成
3.1 データベースの作成
sql = "CREATE DATABASE sample_db DEFAULT CHARACTER SET utf8mb4"
3.2 テーブルの作成
3.2.1 基本的な作成
conn = pymysql.connect(host='localhost', user='admin', passwd='secure123', port=3306, db='sample_db')
cursor = conn.cursor()
sql = ('CREATE TABLE IF NOT EXISTS employees(id VARCHAR(255) NOT NULL, '
'name VARCHAR(255) NOT NULL, '
'age INT NOT NULL, '
'PRIMARY KEY (id))')
cursor.execute(sql)
cursor.close()
conn.close()
3.2.2 自動増分主キーの作成
sql = ('CREATE TABLE accounts (account_id INT AUTO_INCREMENT PRIMARY KEY, '
'username VARCHAR(50),'
'email VARCHAR(100))')
5. データの挿入、更新、検索、削除
5.1 データの挿入
try:
conn = pymysql.connect(host='localhost', user='admin', passwd='secure123', port=3306, db='sample_db')
cursor = conn.cursor()
sql = 'INSERT INTO employees(id, name, age) VALUES (%s, %s, %s)'
cursor.execute(sql, ('10001', 'Alice', 25))
conn.commit()
except Exception as e:
conn.rollback()
print("挿入失敗:", str(e))
finally:
cursor.close()
conn.close()
5.2 データの更新
sql = 'UPDATE employees SET age = %s WHERE id = %s' cursor.execute(sql, (26, '10001'))
5.3 データの検索
sql = "SELECT * FROM employees WHERE age >= 25" cursor.execute(sql) result = cursor.fetchall() print(result)
5.4 データの削除
sql = "DELETE FROM employees WHERE age >= 25" cursor.execute(sql) conn.commit()
6. 辞書形式でのデータ保存
data = {
'id': '10005',
'name': 'Bob',
'age': 30
}
table_name = 'employees'
conn = pymysql.connect(**db_config)
cursor = conn.cursor()
keys = ','.join(data.keys())
values = ','.join(['%s'] * len(data))
sql = f"INSERT INTO {table_name}({keys}) VALUES ({values})"
cursor.execute(sql, tuple(data.values()))
conn.commit()
cursor.close()
conn.close()