1. SQLiteについて
ファイルベースのSQLiteはPython3では標準パッケージに組み込まれています。追加でライブラリをインストールする必要はありません。
2. テーブルの作成
sqlite3.connectでファイル名を指定すると、存在しない場合でも新規作成し開くことができます。既存のファイルを指定した場合、そのあとのコードででテーブルを作成しますが、既に存在するテーブルに対してSQL文CREATE TABLEを発行するとエラーが発生します。
このコードでは、table_isexist()という関数を準備し、事前にテーブルが存在するかチェックしています。
import sqlite3
#ファイルが存在しない場合は自動的に作成される
dbFilePath = "D:\\etc\\sqlite-sample.db"
conn = sqlite3.connect(dbFilePath)
cur = conn.cursor()
tb_name = "addressTable"
if table_isexist(conn, cur, tb_name) == False :
sql = "CREATE TABLE " + tb_name + "(zipcode TEXT, address TEXT, name TEXT)"
cur.execute(sql)
conn.commit()
conn.close()
#DBの中にテーブルが存在するか確認する。
def table_isexist(conn, cur, tablename):
cur.execute('SELECT COUNT(*) FROM sqlite_master '
'WHERE TYPE="table" AND name= "' + tablename + '"')
if cur.fetchone()[0] == 0 :
return False
return True
3. SELECT, INSERT
INSERT文でデータをセットしそれをSELECT文で取り出します。INSERTを使うとき valuesで引数を”?”にするとexecuteを呼び出す際にリストをセットすることで、一気に値を挿入できます。使う上で、”?”の数とリストの数、カラムの数を一致させることに注意が必要です。
#テーブルにデータをINSERT
conn = sqlite3.connect(dbFilePath)
c = conn.cursor()
sql = "INSERT INTO addressTable(zipcode, address, name) values(?,?,?)"
values = ("100-001", "東京都港区", "田中")
c.execute(sql,values)
c.commit()
#INSERTしたデータを取り出す
sql="select * from addressTable"
c.execute(sql)
ret = c.fetchall()
c.close()
コメント