Python3 SQLiteを使う

Python3
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()

コメント

タイトルとURLをコピーしました