Webアプリを開発する際に利用するデータベースとして、軽量データベースであるSQLiteをPythonから利用する方法について説明します。SQLiteはSQL文を使って手軽にデータベースを操作することができます。ここでは、テーブルの作成・削除、レコードの挿入、レコードの参照の各方法について説明します。
テーブルを作成・削除する
PythonからSQLiteを使うためには、sqlite3モジュールを利用します。
次のサンプルプログラムは、fruitsというテーブルを作成するプログラムです。
1 2 3 4 5 6 7 8 9 10 11 |
# -*- coding: utf-8 -*- import sqlite3 con = sqlite3.connect('./sample.db') # データベースに接続する cur = con.cursor() sql = "create table fruits(name text, price text);" cur.execute(sql) # create文を引数としてexecute()を実行する con.close() # 接続を閉じる |
テーブルを作成するには、execute()メソッドの引数にSQLのcreate文を渡します。ここでは、name、priceという2つのカラムを持つfruitsというテーブルを作成しています。
テーブルを削除する際は、execute()にdrop文を渡します。
1 2 3 4 5 6 7 8 9 10 11 |
# -*- coding: utf-8 -*- import sqlite3 con = sqlite3.connect('./sample.db') cur = con.cursor() sql = "drop table fruits;" cur.execute(sql) con.close() |
レコードを挿入する
テーブルにレコードを挿入するには、execute()メソッドの引数にSQLのinsert文を渡します。
1 2 3 4 5 6 7 8 9 10 11 12 |
# -*- coding: utf-8 -*- import sqlite3 con = sqlite3.connect('./sample.db') cur = con.cursor() sql = "insert into fruits values('apple', '100yen')" cur.execute(sql) con.commit() # コミットする con.close() |
上で作成したテーブルのname, priceの各カラムに、apple, 100yenを挿入しています。
複数のレコードを一括して挿入するには、executemany()メソッドにinsert文を渡します。
1 2 3 4 5 6 7 8 9 10 11 12 |
# -*- coding: utf-8 -*- import sqlite3 con = sqlite3.connect('./sample.db') cur = con.cursor() sql = "insert into fruits values('apple', '100yen')" cur.executemany("insert into fruits values(?, ?)", [('orange', '150yen'), ('banana', '200yen')]) # レコードを一括挿入 con.commit() con.close() |
「?」には第2引数のタプルの要素がそれぞれ置き換えられます。
レコードを参照する
レコードを参照するには、execute()メソッドの引数にSQLのselect文を渡します。次のサンプルは、上記で作成したテーブルのレコードを参照するプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# -*- coding: utf-8 -*- import sqlite3 con = sqlite3.connect('./sample.db') cur = con.cursor() sql = "select * from fruits" cur.execute(sql) # select文をexecute()に渡す for row in cur: # レコードを出力する print row[0], row[1] con.close() |
はじめに、データを操作するためのカーソルオブジェクトを生成し、select文を実行しています。ここでは、for文を使ってレコードを出力しています。
1 2 3 |
apple 100yen orange 150yen banana 200yen |