電気ひつじ牧場

技術メモ

【Python3, sqlite3】テーブルが存在しないなら作成する

タイトルどおり指定のテーブルが存在しない時に作成して存在する時は何もしないという処理メモ

ソースコード
def create_table(conn, cur):
    #テーブルを作成


def getdb(dbname):
    # return (connection, cursor)


def table_isexist(conn, cur):
    cur.execute("""
        SELECT COUNT(*) FROM sqlite_master 
        WHERE TYPE='table' AND name='<テーブル名>'
        """)
    if cur.fetchone()[0] == 0:
        return False
    return True  


dbname = 'hoge.db'
(conn, cur) = getdb(dbname)
if table_isexist(conn, cur) == False:
    create_table(conn, cur)

cur.fetchone( )でrowオブジェクトを取得します。これはタプルによく似た機能をもつオブジェクトで(公式によるとタプルとは異なる)、SELECT COUNTでカウントした場合はその個数をrow[0]に格納します。

2017/12/6追記

こんなことしなくてもテーブル作成時に

CREATE TABLE IF NOT EXISTS tablename(...)

とすればテーブルが存在しているかチェックして、存在していなければ作成してくれるそうです。
まだまだ情弱ですね・・・。修行しないと。