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文を使用することで、データベース接続の管理が簡潔になり、接続のクローズを忘れるリスクが軽減されます。また、コードの可読性も向上します。