Pythonでsqlite3を使うときのメモ

2011/10/19

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

参考サイト

Python

Posted by skw