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」でファイルを開いてみます。開くと、test_table01というテーブルと更新されたレコード(データ)を確認することができました。

■SQLite3を使用しテーブル内から特定の行を削除する

確認ができましたので、SQLite3を使用しテーブル内から特定の行(データ)を削除するスクリプトを書いていきます。

■コード

import sqlite3

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

cur = conn.cursor()

cur.execute("""DELETE from test_table01 where id = "3";""")

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ステートメント(「DELETE」などでクエリ)を渡します。今回は「DELETE from test_table01 where id = “3”;」で、test_db.dbというデータベース内にtest_table01というテーブル内の特定の行を削除(DELETE)します。削除のために、fromでtest_table01のテーブルを設定します。今回はid「3」の行を削除します。削除しますが、test_table01のidは複数存在するために、「where id」でidを指定します。今回は「3」とします。これで、test_table01というテーブル内の3番のidの行が削除されます。

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

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

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

■実行・検証

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

実行してみると、今回指定したテーブル内の特定の行が削除され、削除された状態のテーブルを出力させることができました。

 

コメント

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