PythonでMySQLに接続し、レコードセット(カーソル)を使ってデータを削除する方法を解説します。ここでは mysql-connector-python
ライブラリを使用します。
目次
🔧 事前準備
1. ライブラリのインストール(未インストールの場合)
pip install mysql-connector-python
🗑️ 単一レコードを削除する基本例
import mysql.connector # データベース接続 conn = mysql.connector.connect( host="localhost", user="your_username", password="your_password", database="your_database" ) # カーソル作成 cursor = conn.cursor() # DELETE文(例:user_id=1 のレコードを削除) sql = "DELETE FROM users WHERE user_id = %s" params = (1,) # タプルで渡す # SQL実行 cursor.execute(sql, params) # コミット(変更の確定) conn.commit() print(f"{cursor.rowcount} 件のレコードが削除されました。") # リソース解放 cursor.close() conn.close()
🔁 条件に合う複数レコードを削除
sql = "DELETE FROM users WHERE email LIKE %s" params = ("%@example.com",) cursor.execute(sql, params) conn.commit() print(f"{cursor.rowcount} 件のレコードが削除されました。")
⚠️ テーブル全体を削除する例(注意!)
cursor.execute("DELETE FROM users") conn.commit()
⚠️ **全削除(WHERE句なし)**は非常に危険なので、開発時以外は慎重に!
✅ ポイント解説
項目 | 内容 |
---|---|
%s | 値のプレースホルダ(MySQLでは ? ではなく %s ) |
cursor.execute() | SQL文の実行 |
conn.commit() | DELETE などの変更系SQLは必ずコミットが必要 |
cursor.rowcount | 実際に削除された行数を確認可能 |
🧪 応用:条件を確認してから削除
cursor.execute("SELECT user_id, name FROM users WHERE name LIKE %s", ("%田中%",)) rows = cursor.fetchall() for user_id, name in rows: print(f"削除対象:{user_id}, {name}") cursor.execute("DELETE FROM users WHERE user_id = %s", (user_id,)) conn.commit()
🛠️ try…except を使ったエラーハンドリング(おすすめ)
try: conn = mysql.connector.connect( host="localhost", user="your_username", password="your_password", database="your_database" ) cursor = conn.cursor() sql = "DELETE FROM users WHERE user_id = %s" cursor.execute(sql, (1,)) conn.commit() print("削除成功") except mysql.connector.Error as err: print(f"エラー: {err}") finally: if cursor: cursor.close() if conn: conn.close()