Python で MySQL - データの更新 (update)

ここでは Python で MySQL のテーブルのデータを更新 (update) する方法についてご説明します。

MySQL Connector をインストールしていない方は、「Python で MySQL に接続する」をご参考に、MySQL に接続できる状態にしておいてください。

Python で MySQL のテーブルのデータを更新 (update) する

Python で MySQL Connector を使って、テーブルのレコードを更新してみましょう。

test データベースの student テーブルに「Python で MySQL - データの挿入 (insert)」で挿入したレコードのうち、student_id = 1 のレコードの birthday を変更します。

import mysql.connector

cnx = None

try:
    cnx = mysql.connector.connect(
        user='root',  # ユーザー名
        password='password',  # パスワード
        host='localhost',  # ホスト名(IPアドレス)
        database='test'  # データベース名
    )

    cursor = cnx.cursor()

    cursor.execute("SELECT * FROM student WHERE student_id = 1")
    print(cursor.fetchone())

    sql = ('''
    UPDATE  student
    SET     birthday = %s
    WHERE   student_id = %s
    ''')

    param = ('2002-02-02', 1)

    cursor.execute(sql, param)
    cnx.commit()

    cursor.execute("SELECT * FROM student WHERE student_id = 1")
    print(cursor.fetchone())

    cursor.close()

except Exception as e:
    print(f"Error Occurred: {e}")

finally:
    if cnx is not None and cnx.is_connected():
        cnx.close()

上のコードを実行すると、変更前後の student_id = 1 のレコードが次のように出力され、birthday が変更されているのがわかります。

(1, 'Shota', 'Sato', datetime.date(2001, 3, 12), 'M')
(1, 'Shota', 'Sato', datetime.date(2002, 2, 2), 'M')

まず、1 行目で mysql.connector をインポートして、6 ~ 11 行目で、connect() メソッドに、MySQL のユーザー名、パスワード、ホスト名、データベース名を渡してコネクションを生成しています。

13 行目で cursor を生成し、15 ~ 16 行目で確認のために、変更前の student テーブルの student_id = 1 のレコードを print しています。

18 ~ 22 行目で student テーブルのデータを更新する UPDATE 文のクエリーを定義しています。

24 行目で、UPDATE 文の %s に入る引数の値を定義しています。

引数はタプルで定義しますが、要素がひとつのタプルを定義したい時は、ひとつ目の要素の後ろにカンマをつけないと、タプル型にならず文字列型になってしまい、execute でエラーになりますのでご注意ください。

26 行目で cursor.execute(sql, param) で引数を指定して UPDATE 文を実行しています。

27 行目で commit() して、データの更新を確定しています。MySQL データベースをデフォルトのまま使っている場合は、INSERT、UPDATE、DELETE の後に commit しないと、データが変更されません。

29 ~ 30 行目で確認のために、変更後の student テーブルの student_id = 1 のレコードを再度 print しています。


以上、Python で MySQL のテーブルのデータを更新 (update) する方法についてご説明しました。

© 2024 やさしい Python 入門