Python: SQLite3: DBファイル内に特定のテーブルが存在するかを確認

SQLite3のファイル内に、 特定のテーブルが存在するかどうかを確認するためのPythonコードは以下の通りです。

import sqlite3

def check_table_exists(db_name, table_name):
    # データベースに接続
    conn = sqlite3.connect(db_name)
    cur = conn.cursor()
    
    # テーブルの存在を確認するクエリ
    cur.execute("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name=?", (table_name,))
    
    # 結果を取得
    exists = cur.fetchone()[0] > 0
    
    # 接続を閉じる
    conn.close()
    
    return exists

# 使用例
db_name = 'example.db'
table_name = 'users'
if check_table_exists(db_name, table_name):
    print(f"テーブル '{table_name}' は存在します。")
else:
    print(f"テーブル '{table_name}' は存在しません。")

コードの説明

  • データベース接続: sqlite3.connect(db_name)で指定したデータベースに接続します。
  • カーソル作成: conn.cursor()でデータベース操作用のカーソルを作成します。
  • テーブル存在確認クエリ: SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name=?というSQL文を使用して、指定したテーブル名がsqlite_masterテーブルに存在するかを確認します。このテーブルにはすべてのテーブルのメタ情報が格納されています。
  • 結果取得: cur.fetchone()で結果を取得し、カウントが0より大きい場合はテーブルが存在すると判断します。
  • 接続終了: 最後にconn.close()でデータベース接続を閉じます。

このコードを実行すると、指定したテーブルが存在するかどうかを確認できます。

Python