PythonでSQLite3を使用しテーブル内のレコード(データ)を更新する

PythonでSQLite3を使用しテーブル内のレコード(データ)を更新してみます。

なお、この記事は「PythonでSQLite3を使用しテーブルの作成とレコード登録(データ追加)をする」の続きとなります。

今回は、SQLite3を使用します。このライブラリ・モジュールはPythonの標準ライブラリですので、事前にインストールする必要はありません。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■SQLite3を使用し作成したテーブルとレコードを確認する

SQLite3を使用しテーブル内のレコード(データ)を更新してみますが、その前に作成したテーブルとレコードを確認してみます。

前回、「C:\Users\user_(フォルダパス)」内に「test_db.db」というDBファイルを作成しました。

このファイルを、今回データベース管理ソフトである「DB Browser for SQLite」でファイルを開いてみます。開くと、作成したテーブルとレコードを確認することができました。

■SQLite3を使用しテーブル内のレコード(データ)を更新する

確認ができましたので、SQLite3を使用しテーブル内のレコード(データ)を更新するスクリプトを書いていきます。

■コード

import sqlite3

conn = sqlite3.connect('test_db.db')

cur = conn.cursor()

cur.execute("""UPDATE test_table01 SET name = "松岡" where id = "1";""")

conn.commit()

cur.execute("SELECT * from test_table01")

print(cur.fetchall())

importでsqlite3モジュールを呼び出します。その後、conという変数を定義し、その中でsqlite3.connect()を用います。括弧内には引数,パラメータとして、test_db.dbというデータベースを渡し、接続を確立します。

conn変数内にsqlite3.connect()を格納後、今度はcur変数を定義し、connに対してcursor()を用います。これで一連のデータに順にアクセスするカーソルオブジェクトを作成します。

作成後、curに対してexecute()を用います。括弧内には引数,パラメータとして、SQLステートメント(「UPDATE」などでクエリ)を渡します。今回は「UPDATE test_table01 SET name = “松岡” where id = “1”;」で、test_db.dbというデータベース内にtest_table01というテーブル内を更新(UPDATE)します。更新のために、test_table01のnameをセット(SET)します。今回はnameのデータを「松岡」に更新します。更新しますが、test_table01のnameは複数存在するために、「where id」でidを指定します。今回は「1」とします。これで、test_table01というテーブル内の1番のnameが以前のデータから新しいものに更新されます。

その後、conn.commit()を用いて、SQLステートメントの処理をデータベースに反映させます。

反映後、curに対してexecute()を用います。括弧内には引数,パラメータとして、SQLステートメントを渡します。今回は「SELECT * from test_table01」でtest_table01テーブル内の”*”(アスタリスク)(全フィールド)を渡します。これでテーブル内のカラムのデータ全てが選択されている状態となります。

最後にcurに対してfetchall()を用います。これで、更新の処理が反映された全ての行をフェッチし、リストが返されます。返されたリストをprint()で出力します。

■実行・検証

このスクリプトを「db_f_update.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、テーブル内のレコード(データ)が更新され、更新された状態のテーブルを出力させることができました。

コメント

タイトルとURLをコピーしました