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)
このコードの説明:
- sqlite3モジュールをインポートします。
- search_user_by_id関数を定義します。この関数は指定されたIDに基づいてユーザーを検索します。
- with sqlite3.connect(db_file) as conn:を使用してデータベースに接続します。with文を使用することで、ブロックの終了時に自動的に接続がクローズされます。
- カーソルを取得し、SQLクエリを準備します。パラメータ化クエリを使用してSQLインジェクション攻撃を防ぎます。
- cursor.execute()を使用してクエリを実行し、指定されたIDのユーザーを検索します。
- fetchone()メソッドを使用して結果を取得します。
- 結果が存在する場合、ユーザーの情報を表示します。存在しない場合は、その旨を表示します。
- エラーハンドリングを行い、例外が発生した場合にエラーメッセージを表示します。
- 最後に、ユーザーに検索したいIDの入力を求め、その入力値を使用してsearch_user_by_id関数を呼び出します。
この方法では、with文を使用することで、データベース接続の管理が簡潔になり、接続のクローズを忘れるリスクが軽減されます。また、コードの可読性も向上します。