【SQLite】データベースからデータを削除する

データベースからデータを削除するためにdelete_dataメソッドを作成する。

import sqlite3
import os

class Database:
  def __init__(self,_dbname='main.db'):
    self.dbname = _dbname
    if os.path.isfile(self.dbname) != True:
      self.create_bd()
      self.create_table()

  def create_bd(self):
    conn = sqlite3.connect(self.dbname)
    conn.close()

  def create_table(self):
    conn = sqlite3.connect(self.dbname)
    cur = conn.cursor()
    cur.execute('CREATE TABLE users(id INTEGER PRIMARY KEY AUTOINCREMENT, name STRING, message STRING)')
    conn.close()

  def write_data(self,_name,_message):
    conn = sqlite3.connect(self.dbname)
    cur = conn.cursor()
    cur.execute(f'INSERT INTO users(name,message) values("{_name}", "{_message}")')
    conn.commit()
    conn.close()

  def read_data(self):
    conn = sqlite3.connect(self.dbname)
    cur = conn.cursor()
    cur.execute('SELECT * FROM users')
    data = cur.fetchall()
    conn.close()
    return data

  def delete_data(self,_id):
    conn = sqlite3.connect(self.dbname)
    cur = conn.cursor()
    cur.execute(f'DELETE FROM users WHERE id={_id}')
    conn.commit()
    conn.close()

db = Database()
db.write_data('inoha_naito','Hello, CGI!')
db.delete_data(1)
print(db.read_data())

今回は、以下のように出力される。

[]

参考

sqlite3 --- SQLite データベースに対する DB-API 2.0 インターフェース
ソースコード: Lib/sqlite3/ SQLite は、軽量なディスク上のデータベースを提供する C ライブラリです。別のサーバプロセスを用意する必要なく、 SQL クエリー言語の非標準的な一種を使用してデータベースにアクセスできます。...
タイトルとURLをコピーしました