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.")

コードの説明:

  1. update_user_age 関数を定義します。この関数は3つのパラメータを受け取ります:
    • db_path: データベースファイルのパス
    • user_id: 更新対象のユーザーID
    • new_age: 新しい年齢
  2. 関数内で、with 文を使ってデータベースに接続します。
  3. UPDATE文を準備し、cursor.execute() で実行します。
  4. conn.commit() で変更を確定します。
  5. 更新された行数 (cursor.rowcount) を返します。
  6. メイン部分では、関数の使用例を示しています。データベースのパス、更新対象のユーザーID、新しい年齢を指定して関数を呼び出します。
  7. 関数の戻り値(更新された行数)を表示します。

この方法の利点:

  • 関数化することで、コードの再利用性が高まります。
  • データベースのパスを引数として渡すことで、異なるデータベースファイルに対しても同じ関数を使用できます。
  • with文を使用しているので、データベース接続の適切な開閉が保証されます。

注意点:

  • 'your_database.db' は実際のデータベースファイル名に置き換えてください。
  • 存在しないIDを指定した場合、エラーは発生しませんが、更新される行数は0になります。

この関数を使用することで、簡単かつ安全にSQLite3データベース内のユーザー年齢を更新することができます。

Python