Python: SQLite3のSELECT文で値を動的に指定する

SQLite3を使用してPythonでデータを検索する方法。

テーブル名はusers、カラムは(id, name, age)。 指定した「id」のデータを検索します。

import sqlite3

def search_user_by_id(user_id):
	# データベースファイル名(実際のファイル名に置き換えてください)
	db_file = 'your_database.db'

	try:
		# with文を使用してデータベースに接続
		with sqlite3.connect(db_file) as conn:
			# カーソルを取得
			cursor = conn.cursor()

			# SQLクエリを準備(パラメータ化クエリを使用)
			query = "SELECT * FROM users WHERE id = ?"
			
			# クエリを実行
			cursor.execute(query, (user_id,))
			
			# 結果を取得
			result = cursor.fetchone()
			
			if result:
				# 結果を表示
				print(f"ID: {result}")
				print(f"Name: {result}")
				print(f"Age: {result}")
			else:
				print(f"User with ID {user_id} not found.")

	except sqlite3.Error as e:
		print(f"An error occurred: {e}")

# 使用例
user_id = input("検索するユーザーのIDを入力してください: ")
search_user_by_id(user_id)

このコードの説明:

  1. sqlite3モジュールをインポートします。
  2. search_user_by_id関数を定義します。この関数は指定されたIDに基づいてユーザーを検索します。
  3. with sqlite3.connect(db_file) as conn:を使用してデータベースに接続します。with文を使用することで、ブロックの終了時に自動的に接続がクローズされます。
  4. カーソルを取得し、SQLクエリを準備します。パラメータ化クエリを使用してSQLインジェクション攻撃を防ぎます。
  5. cursor.execute()を使用してクエリを実行し、指定されたIDのユーザーを検索します。
  6. fetchone()メソッドを使用して結果を取得します。
  7. 結果が存在する場合、ユーザーの情報を表示します。存在しない場合は、その旨を表示します。
  8. エラーハンドリングを行い、例外が発生した場合にエラーメッセージを表示します。
  9. 最後に、ユーザーに検索したいIDの入力を求め、その入力値を使用してsearch_user_by_id関数を呼び出します。

この方法では、with文を使用することで、データベース接続の管理が簡潔になり、接続のクローズを忘れるリスクが軽減されます。また、コードの可読性も向上します。

Python