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インジェクションを防ぐ安全な方法です。