Pythonでsqlite3を使うときのメモ
Pythonでsqlite3を使うとき、いつもどうやるのか忘れてしまうのでメモしておく。

実験環境
- Windows XP
- Python 2.7
テストスクリプト
# coding:utf-8
import sqlite3
# データベースを表すConnectionオブジェクトを作る
# カレントディレクトリのtest.dbをデータベースファイルとする
#con = sqlite3.connect("test.db")
# RAM上にデータベースを作る場合は :memory: を指定する
con = sqlite3.connect(":memory:")
# cursorオブジェクトを作る
cur = con.cursor()
# テーブル booksを定義する
query = '''create table books (
id integer primary key autoincrement not null,
name text,
author text,
price integer )'''
cur.execute(query)
# データを登録する
query = u'''insert into books
(name, author, price)
values ('plone','プローン太郎',3000)'''
cur.execute(query)
con.commit()
# データを登録する 位置パラメータ「?」を使う
# クエリパーサが特別な処理をするのでクォートやエスケープ処理が必要ない
query = u'''insert into books
(name, author, price)
values (?, ?, ?) '''
cur.execute(query, ('python',u'パイソン次郎',2500))
con.commit()
# データを登録する 位置パラメータを使ってまとめて処理
tbl = [
('wxpython', u'wxpython三郎', 5200),
('c#', u'シーシャープ史朗', 3600),
('lisp', u'りすぷ吾郎', 4150), ]
for rec in tbl:
cur.execute(query, rec)
con.commit()
# データを登録する 名前付きパラメータを使う
# クエリパーサが特別な処理をするのでクォートやエスケープ処理が必要ない
query = u'''insert into books
(name, author, price)
values (:name, :author, :price) '''
d = {'name': 'perl', 'author': u'パール陸朗', 'price': 1500}
cur.execute(query, d)
con.commit()
# 登録したデータを表示する
query = 'select * from books'
cur.execute(query)
for r in cur.fetchall():
print r[0], r[1], r[2], r[3]
# cursorオブジェクトを閉じる
cur.close()
# connectionオブジェクトを閉じる
con.close()
結果
1 plone プローン太郎 3000 2 python パイソン次郎 2500 3 wxpython wxpython三郎 5200 4 c# シーシャープ史朗 3600 5 lisp りすぷ吾郎 4150 6 perl パール陸朗 1500
