PythonでSQLiteを操作する方法:sqlite3
Webアプリを開発する際に利用するデータベースとして、軽量データベースであるSQLiteをPythonから利用する方法について説明します。SQLiteはSQL文を使って手軽にデータベースを操作することができます。ここでは、テーブルの作成・削除、レコードの挿入、レコードの参照の各方法について説明します。
テーブルを作成・削除する
PythonからSQLiteを使うためには、sqlite3モジュールを利用します。
次のサンプルプログラムは、fruitsというテーブルを作成するプログラムです。
# -*- 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文を渡します。
# -*- 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文を渡します。
# -*- 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文を渡します。
# -*- 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文を渡します。次のサンプルは、上記で作成したテーブルのレコードを参照するプログラムです。
# -*- 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文を使ってレコードを出力しています。
apple 100yen orange 150yen banana 200yen