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