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が実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
実行してみると、今回指定したテーブル内の特定の行が削除され、削除された状態のテーブルを出力させることができました。
コメント