PythonでMySQLにレコードセット(カーソル)を使ってデータを追加(INSERT)する方法について、mysql-connector-python ライブラリを使って解説します。
目次
🧰 事前準備
1. ライブラリのインストール
pip install mysql-connector-python
📘 基本構文:レコードを1件追加(INSERT)
import mysql.connector
# データベースに接続
conn = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="your_database"
)
# カーソルを作成(レコードセット)
cursor = conn.cursor()
# INSERT文を定義
sql = "INSERT INTO users (user_id, name, email) VALUES (%s, %s, %s)"
params = (1, "山田太郎", "yamada@example.com")
# 実行
cursor.execute(sql, params)
# コミット(保存)
conn.commit()
print(f"{cursor.rowcount} 件のレコードが追加されました。")
# 後始末
cursor.close()
conn.close()
🔁 複数のレコードを一括追加(executemany)
data = [
(2, "佐藤花子", "sato@example.com"),
(3, "鈴木一郎", "suzuki@example.com"),
(4, "高橋優", "takahashi@example.com")
]
sql = "INSERT INTO users (user_id, name, email) VALUES (%s, %s, %s)"
cursor.executemany(sql, data)
conn.commit()
print(f"{cursor.rowcount} 件のレコードが一括追加されました。")
✅ ポイント解説
| 項目 | 説明 |
|---|---|
cursor.execute() | 単一のレコードを追加 |
cursor.executemany() | 複数のレコードを一括で追加 |
%s | 値のプレースホルダ(MySQL専用。?ではない) |
conn.commit() | 変更内容を確定(コミット)しないと追加されない |
cursor.rowcount | 追加された行数を取得 |
🛡️ SQLインジェクション対策にも有効
プレースホルダ %s を使って値を渡す方法は、SQLインジェクションを防ぐ安全な方法です。
