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()
