Python 2.5 から SQLite3 が標準で使えるようになっている。
# -*- coding: utf-8 -*-
import sqlite3
needCommit = 0
# Database を開く
if needCommit == 1:
con = sqlite3.connect("data.db");
else:
con = sqlite3.connect("data.db", isolation_level=None); # Commit 不要
# Table 作成
sql = u"CREATE TABLE test(ID INT PRIMARY KEY, NAME TEXT NOT NULL);"
con.execute(sql)
# データ登録
sql = u"INSERT INTO test(ID, NAME) values (0, 'aaa');"
con.execute(sql)
# データ登録 その 2
sql = u"INSERT INTO test(ID, NAME) values (?, ?);"
con.execute(sql, (1, "bbb"))
con.execute(sql, (2, "ccc"))
if needCommit == 1:
con.commit()
# レコード取得
c = con.cursor()
c.execute("SELECT * FROM test")
for row in c:
print row[0], row[1]
# Database を閉じる
con.close();
実行結果
> python sqlite.py
0 aaa
1 bbb
2 ccc
各処理を関数化、テーブルが作成済みの場合は最初に drop する処理を追加
# -*- coding: utf-8 -*-
import sqlite3
# Database を開く
def connectDb():
print "Connect DB"
con = sqlite3.connect("data.db", isolation_level=None);
return con
# Table 作成
def createTable(con, name):
print "Create table";
sql = "CREATE TABLE %s(ID INT PRIMARY KEY, NAME TEST NOT NULL);" % name
con.execute(sql)
# データ登録
def addData(con, id, name):
print "Add data (%d %s)" % (id, name)
sql = "INSERT INTO test(ID, NAME) values(%d, '%s');" % (id, name)
print sql;
con.execute(sql)
# 全レコード表示
def showAllRecord(con):
c = con.cursor()
c.execute("SELECT * FROM test")
for row in c:
print row[0], row[1]
# Database を閉じる
def closeDb(con):
print "Close database"
con.close()
# テーブル一覧表示
def showAllTables(con):
c = con.cursor()
c.execute("SELECT NAME FROM sqlite_master WHERE type='table'")
for row in c:
print row[0]
# テーブル作成済みか確認
def alreadyCreatedTable(con, name):
c = con.cursor()
c.execute("SELECT NAME FROM sqlite_master WHERE type='table'")
for row in c:
if row[0] == name:
print "Found %s" % name;
return 1
return 0
# Drop table
def dropTable(con, name):
print "Drop table %s" % name
sql = "DROP TABLE %s;" % name
con.execute(sql)
# メイン処理
con = connectDb()
showAllTables(con)
if alreadyCreatedTable(con, 'test') == 1:
dropTable(con, 'test')
createTable(con, 'test')
showAllTables(con)
alreadyCreatedTable(con, 'test')
addData(con, 0, 'aaa')
addData(con, 1, 'bbb')
addData(con, 2, 'ccc')
showAllRecord(con)
closeDb(con)
実行結果
> python sqlite2.py
Connect DB
Create table
test
Found test
Add data (0 aaa)
INSERT INTO test(ID, NAME) values(0, 'aaa');
Add data (1 bbb)
INSERT INTO test(ID, NAME) values(1, 'bbb');
Add data (2 ccc)
INSERT INTO test(ID, NAME) values(2, 'ccc');
0 aaa
1 bbb
2 ccc
Close database
> python sqlite2.py
Connect DB
test
Found test
Drop table test
Create table
test
Found test
Add data (0 aaa)
INSERT INTO test(ID, NAME) values(0, 'aaa');
Add data (1 bbb)
INSERT INTO test(ID, NAME) values(1, 'bbb');
Add data (2 ccc)
INSERT INTO test(ID, NAME) values(2, 'ccc');
0 aaa
1 bbb
2 ccc
Close database
0 件のコメント:
コメントを投稿