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