【スポンサーリンク】
データベースの準備
まず、以下のコードを実行してサンプルデータベースを作成する。
import sqlite3 #データベース読み込み db = sqlite3.connect( "text.db", #ファイル名 isolation_level=None, ) #フィールド作成用SQL文 sql = """ CREATE TABLE Fruit ( id INTEGER PRIMARY KEY, name VARCHAR(20), price INTEGER ); """ db.execute(sql) #sql文を実行 #登録データ r = [(1, "banana", 130), (2, "apple", 100), (3, "orange", 198)] #レコード一括登録登録用SQL文 sql = """ INSERT INTO Fruit VALUES ( ?, ?, ? ) """ db.executemany(sql, r) #sql文を実行 db.close() #データベースを閉じる
作成されるデータベースは以下の通り。今回の例ではidをPRIMARY KEY
に設定してあるため、レコード内で重複したidを設定することはできない。
テーブル名:Fruit
id | name | price | 1 | banana | 130 |
---|---|---|
2 | apple | 100 |
3 | orange | 198 |
レコードを削除
サンプルデータベース中から、名前がappleのレコードを削除する方法を示す。
import sqlite3 #データベース読み込み db = sqlite3.connect( "text.db", #ファイル名 isolation_level=None, ) #レコード削除用SQL文 sql = """DELETE FROM Fruit WHERE name="apple";""" db.execute(sql) #sql文を実行 db.close() #データベースを閉じる
SQLコマンドDELETE FROM テーブル名 WHERE 条件
を実行することで、特定のレコードを削除することができる。上記の例では、条件の項目をname="apple"
に設定しているため、作成したテーブルの中から(2, apple, 100)のレコードが削除される。
【スポンサーリンク】
レコードを更新
データベースに登録されているレコードを更新する例を示す。
import sqlite3 #データベース読み込み db = sqlite3.connect( "text.db", #ファイル名 isolation_level=None, ) #レコード削除用SQL文 sql = """UPDATE Fruit SET price = "150" WHERE id = "1";""" db.execute(sql) #sql文を実行 db.close() #データベースを閉じる
SQLコマンドUPDATE テーブル名 SET 更新後のデータ WHERE 条件;
を実行することで、条件に当てはまるレコードの値を更新することができる。上記の例では、idが1のレコードのpriceを150に更新している。
レコードを更新または挿入
SQLコマンドREPLACE
を使用すると、レコードの更新と挿入の両方に対応することができる。ただし、REPLACEコマンドでレコードの更新を行う場合は、テーブル作成時にPRIMARY KEY
を指定しておく必要がある。設定していない場合はレコードの更新は行われず、新規のレコードとして登録されてしまう。
以下、サンプルデータベースのid=3の項目に対し、priceを250に更新する例を示す。
import sqlite3 #データベース読み込み db = sqlite3.connect( "text.db", #ファイル名 isolation_level=None, ) #レコード更新用SQL文(REPLACE) sql = """REPLACE INTO Fruit (id, name, price) VALUES(3, orange, 250) """ db.execute(sql) #sql文を実行 db.close() #データベースを閉じる
SQLコマンドREPLACE INTO テーブル名 フィールド レコード
を実行することで、既存のレコードを更新することができる。この時、PRIMARY KEYであるidがデータベース内に存在しない場合は、新規のレコードとして登録される。
【スポンサーリンク】