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データベース内のユーザー年齢を更新することができます。