【スポンサーリンク】
データベースの概要
データベース内では、フィールド(列)とレコード(行)から構成されるテーブル(表)を用いてデータを保存している。サンプルデータベースとして、以下の様なフルーツのid、名前、価格の一覧を管理するためのデータベースを作成していく。この例では、id, name, priceがフィールド、各データがレコードになる。
テーブル名:Fruit
id | name | price | 1 | banana | 130 |
---|---|---|
2 | apple | 100 |
3 | orange | 198 |
データベースファイルを作成・フィールドを登録
データベースを作成し、フィールドを登録する例を示す。
import sqlite3 #データベースを新規作成 or 読み込み db = sqlite3.connect( "text.db", #ファイル名 isolation_level=None, ) #フィールド作成用SQL文 sql = """ CREATE TABLE Fruit ( id INTEGER, name VARCHAR(20), price INTEGER ); """ db.execute(sql) #sql文を実行 db.close() #データベースを閉じる
connectメソッドを用いてファイル名を指定することで、データベースファイル操作用オブジェクトを作成できる。ファイルが存在しない場合は新規作成される。次に、SQLコマンドのCREATE TABLE テーブル名(フィールド)
を設定しexecuteメソッドを実行することで、データベース内にテーブルを作成し、最後にデータベースを閉じている。
【スポンサーリンク】
レコードを登録
次に、作成したデータベースファイル内のテーブルに、レコードを登録していく例を示す。
import sqlite3 #データベースを新規作成 or 読み込み db = sqlite3.connect( "text.db", #ファイル名 isolation_level=None, ) #レコード登録用SQL文 sql = """ INSERT INTO Fruit VALUES ( 1, 'banana', 130 ) """ db.execute(sql) #sql文を実行 db.close() #データベースを閉じる
レコードを登録する際は、SQLコマンドのINSERT INTO テーブル名 VALUES(レコード情報)
を使用する。上記の例では、SQLコマンドのレコード情報に、一つ目の要素である(1, banana, 130)を設定し、executeメソッドで実行することでレコードを登録している。
複数のレコードを一括登録
複数のレコードを一括で登録する場合は、executemanyメソッドを使用する。
import sqlite3 #データベース読み込み db = sqlite3.connect( "text.db", #ファイル名 isolation_level=None, ) #登録データ r = [(2, "apple", 100), (3, "orange", 198)] #レコード一括登録登録用SQL文 sql = """ INSERT INTO Fruit VALUES ( ?, ?, ? ) """ db.executemany(sql, r) #sql文を実行 db.close() #データベースを閉じる
リストにした登録データをexecutemanyメソッドに渡すことで、データを一括登録している。この時、SQL文のデータ項目は?
にしておく。
【スポンサーリンク】
データ読み出し
データを読み出す時は、データベースからcursorオブジェクトを作成し、レコード取得用SQLコマンドを実行する。
import sqlite3 #データベース読み込み db = sqlite3.connect( "text.db", #ファイル名 isolation_level=None, ) #データベースからcursorオブジェクトを作成 c = db.cursor() #レコード取得SQL文 sql = """SELECT * FROM Fruit""" #Fruitテーブル内のすべての項目を選択 #cursorオブジェクトでSQL文を実行 c.execute(sql) #選択した項目を表示 for item in c: print(item) db.close() #データベースを閉じる
データベース内の全てのレコード取得には、SQLコマンドのSELECT フィールド名 FROM テーブル名
を使用する。今回は全てのフィールドを取得しているので、フィールド名を*
にしている。
【スポンサーリンク】