Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでデータベースを更新する方法|UPDATE操作の基本とサンプルコード

データベースにおけるUPDATE操作とは、すでにデータベース内に存在する1件以上のレコードの値を変更することを指します。INSERTが新しいデータの追加であるのに対し、UPDATEは既存データの修正を行うための基本的なSQLコマンドです。

UPDATE操作の概要

UPDATE文は、WHERE句で指定した条件に一致するレコードだけを対象に、特定のカラム(列)の値を書き換えます。WHERE句を省略するとテーブル内の全レコードが更新されてしまうため、実行前には必ず更新範囲を確認することが重要です。

以下の例では、SEX(性別)が「M」のすべてのレコードを対象に、AGE(年齢)を1歳増やす処理を行います。

サンプルコード

#!/usr/bin/python
import MySQLdb

# データベースへの接続を開く
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB")

# cursor()メソッドでカーソルオブジェクトを準備
cursor = db.cursor()

# 更新対象のレコードを指定するSQLクエリを準備
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')

try:
    # SQLコマンドを実行
    cursor.execute(sql)
    # 変更内容をデータベースに確定(コミット)
    db.commit()
except:
    # エラー発生時は変更を取り消す(ロールバック)
    db.rollback()

# サーバーとの接続を切断
db.close()

コードの解説

1. データベースへの接続

MySQLdb.connect()メソッドにホスト名、ユーザー名、パスワード、データベース名を渡して接続を確立します。

2. カーソルの作成とSQLの実行

cursor()メソッドで取得したカーソルオブジェクトに対してexecute()を呼び出すことで、UPDATE文が実行されます。この例では「SEX = 'M'」という条件に一致する全レコードのAGEが+1されます。

3. commit()とrollback()によるトランザクション管理

UPDATEのようなデータ変更操作では、db.commit()を呼び出して初めて変更がデータベースに反映されます。一方、実行中にエラーが発生した場合はexceptブロック内のdb.rollback()により、変更前の状態に戻すことができます。この仕組みによって、データの整合性が保たれます。

4. 接続の切断

処理が完了したらdb.close()で接続を閉じ、リソースを解放します。

補足:より安全なSQLの書き方

文字列フォーマットでSQLを組み立てる方法は手軽ですが、外部からの入力値を扱う場合はSQLインジェクションの危険があります。実務では、プレースホルダを使ったパラメータ化クエリ(例:cursor.execute("UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = %s", ('M',)))を採用することが推奨されます。

  1. Pythonの「<>」演算子とは?Python 2とPython 3での違いを解説

    Pythonには、2つの値が「等しくない」ことを判定するための比較演算子として、かつて「<>」という記法が存在していました。これは数式における「≠」に相当する演算子で、Python 2.x系で利用できました。同じ動作をする「!=」演算子もありますが、Python 3.xでは「<>」演算子は廃止され、使用するとエラーになる点に注意が必要です。 Python 2.7での使用例 Python 2.7では、「<>」と「!=」のどちらも「等しくない」判定として同じ結果を返します。 >>> a=5 >>> b=7 >>&g

  2. Pythonで辞書の値を更新する方法|update()メソッドの使い方を解説

    Pythonの組み込み型である辞書(dict)クラスには、update()メソッドが標準で用意されています。このメソッドは、別の辞書オブジェクトを引数として受け取り、呼び出し元の辞書にマージ(統合)することができます。 基本構文 D1.update(D2) 動作の仕組み D2の内容がD1に統合されます。このとき、キーの有無によって以下のように挙動が変わります。 D2のキーがD1にすでに存在する場合:そのキーの値がD2の値で上書き(更新)されます。 D2のキーがD1に存在しない場合:新しいキーと値のペアとしてD1に追加されます。 実行後、D1は更新された内容を保持します。 使用例 >&