Python で MySQL - データの削除 (delete)
ここでは Python で MySQL のテーブルのデータを削除 (delete) する方法についてご説明します。
MySQL Connector をインストールしていない方は、「Python で MySQL に接続する」をご参考に、MySQL に接続できる状態にしておいてください。
Python で MySQL のテーブルのデータを削除 (delete) する
Python で MySQL Connector を使って、テーブルのレコードを削除してみましょう。
test データベースの student テーブルに「Python で MySQL - データの挿入 (insert)」で挿入したレコードのうち、student_id = 2 のレコードを削除します。
import mysql.connector
cnx = None
try:
cnx = mysql.connector.connect(
user='root', # ユーザー名
password='password', # パスワード
host='localhost', # ホスト名(IPアドレス)
database='test' # データベース名
)
cursor = cnx.cursor()
sql = ('''
DELETE
FROM student
WHERE student_id = %s
''')
param = (2,)
cursor.execute(sql, param)
cnx.commit()
cursor.execute("SELECT * FROM student")
print(cursor.fetchall())
cursor.close()
except Exception as e:
print(f"Error Occurred: {e}")
finally:
if cnx is not None and cnx.is_connected():
cnx.close()
上のコードを実行すると、クエリー実行後に student テーブルの全レコードが出力され、student_id = 2 のレコードが削除されていることがわかります。
[(1, 'Shota', 'Sato', datetime.date(2002, 2, 2), 'M'), (3, 'Yuka', 'Kimura', datetime.date(2001, 3, 27), 'F')]
まず、1 行目で mysql.connector をインポートして、6 ~ 11 行目で、connect() メソッドに、MySQL のユーザー名、パスワード、ホスト名、データベース名を渡してコネクションを生成しています。
13 行目で cursor を生成し、15 ~ 19 行目で student テーブルのデータを削除する DELETE 文のクエリーを定義しています。
21 行目で DELETE 文の %s に入る引数の値を定義しています。
引数はタプルで定義しますが、要素がひとつのタプルを定義したい時は、ひとつ目の要素の後ろにカンマをつけないと、タプル型にならず文字列型になってしまい、execute でエラーになりますのでご注意ください。
23 行目で cursor.execute(sql, param) で引数を指定して DELETE 文を実行しています。
24 行目で commit() して、データの削除を確定しています。MySQL データベースをデフォルトのまま使っている場合は、INSERT、UPDATE、DELETE の後に commit しないと、データが変更されません。
26 ~ 27 行目で確認のために、削除後の student テーブルの全レコードを print しています。
以上、Python で MySQL のテーブルのデータを削除 (delete) する方法についてご説明しました。