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