PythonでMySQLのデータベースを操作し、レコードセット(カーソル)を使ってデータを更新する方法を解説します。主に使用するライブラリは mysql-connector-python
または PyMySQL
です。ここでは mysql-connector-python
を使った例を紹介します。
目次
🔧 必要な準備
1. ライブラリのインストール
pip install mysql-connector-python
📘 基本構文:UPDATE文を使ったレコード更新
import mysql.connector # データベースへ接続 conn = mysql.connector.connect( host="localhost", user="your_username", password="your_password", database="your_database" ) # カーソルを作成 cursor = conn.cursor() # 更新するSQL(例:user_idが1のユーザーの名前を変更) sql = "UPDATE users SET name = %s WHERE user_id = %s" params = ("新しい名前", 1) # SQL文を実行 cursor.execute(sql, params) # 変更を確定(コミット) conn.commit() # 結果の表示(更新された件数) print(f"{cursor.rowcount} 件のレコードが更新されました。") # リソースのクローズ cursor.close() conn.close()
✅ ポイント解説
項目 | 説明 |
---|---|
conn.cursor() | レコードセット(カーソル)を作成。これでSQLを実行可能 |
cursor.execute() | SQL文を発行。プレースホルダ %s を使うことでSQLインジェクション対策にもなる |
conn.commit() | UPDATE ・INSERT ・DELETE などの変更は、必ず明示的にコミット |
cursor.rowcount | 更新されたレコード数を取得 |
cursor.close() / conn.close() | 最後にリソースを解放することが重要 |
🔄 ループで複数レコードを更新したいとき
data = [ ("田中太郎", 1), ("鈴木花子", 2), ("佐藤健", 3) ] sql = "UPDATE users SET name = %s WHERE user_id = %s" cursor.executemany(sql, data) conn.commit()
🧪 レコード取得後に条件に応じて更新
cursor.execute("SELECT user_id, name FROM users") rows = cursor.fetchall() for user_id, name in rows: if "旧" in name: new_name = name.replace("旧", "新") cursor.execute("UPDATE users SET name = %s WHERE user_id = %s", (new_name, user_id)) conn.commit()
PyMySQL
版の例- ORM(SQLAlchemy)での更新