Python: SQLite3のUPDATE文(データ更新文)
SQLite3を使ってPythonでデータを更新する方法を、関数を使って実装する例です。
テーブル名はusers、カラムは(id, name, age)。
idを指定して、カラムageを更新します。
import sqlite3 def update_user_age(db_path, user_id, new_age): """ 指定されたユーザーIDの年齢を更新する関数 :param db_path: データベースファイルのパス :param user_id: 更新対象のユーザーID :param new_age: 新しい年齢 :return: 更新された行数 """ with sqlite3.connect(db_path) as conn: cursor = conn.cursor() update_query = """ UPDATE users SET age = ? WHERE id = ? """ cursor.execute(update_query, (new_age, user_id)) conn.commit() return cursor.rowcount # 使用例 if __name__ == "__main__": db_path = 'your_database.db' user_id = 1 # 更新対象のユーザーID new_age = 30 # 新しい年齢 rows_affected = update_user_age(db_path, user_id, new_age) print(f"{rows_affected} row(s) updated.")
コードの説明:
- update_user_age 関数を定義します。この関数は3つのパラメータを受け取ります:
- db_path: データベースファイルのパス
- user_id: 更新対象のユーザーID
- new_age: 新しい年齢
- 関数内で、with 文を使ってデータベースに接続します。
- UPDATE文を準備し、cursor.execute() で実行します。
- conn.commit() で変更を確定します。
- 更新された行数 (cursor.rowcount) を返します。
- メイン部分では、関数の使用例を示しています。データベースのパス、更新対象のユーザーID、新しい年齢を指定して関数を呼び出します。
- 関数の戻り値(更新された行数)を表示します。
この方法の利点:
- 関数化することで、コードの再利用性が高まります。
- データベースのパスを引数として渡すことで、異なるデータベースファイルに対しても同じ関数を使用できます。
- with文を使用しているので、データベース接続の適切な開閉が保証されます。
注意点:
- 'your_database.db' は実際のデータベースファイル名に置き換えてください。
- 存在しないIDを指定した場合、エラーは発生しませんが、更新される行数は0になります。
この関数を使用することで、簡単かつ安全にSQLite3データベース内のユーザー年齢を更新することができます。