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