Python の MySQL でプリペアド ステートメントを使用する
データベース操作を使用する場合、プリペアド ステートメントを使用するとクエリのパフォーマンスが大幅に向上します。 Python では、プリペアド ステートメントを MySQL で利用できます。
Python のパラメータ化されたクエリ形式
Python では、次の形式を使用してパラメータ化されたクエリを作成できます。
cursor.execute("SELECT FROM tablename WHERE fieldname = %s", [value])
パラメータ マーカー %s は、実際の値のプレースホルダーとして機能します。データベースドライバーが異なれば、使用するパラメーター化スタイルも異なる場合があります。ドライバーに適切なスタイルを決定するには、ドライバー モジュールをインポートし、その paramstyle 属性を出力します。
サポートされるパラメーター化スタイル
Python 拡張提案 (PEP- 249) では、次のパラメータ化スタイルがサポートされています:
使用例
準備されたステートメントの使用法を示すには、次のことを考慮してください。例:
import mysql.connector db = mysql.connector.connect( host="localhost", user="username", password="password", database="database_name" ) cursor = db.cursor() # Create a parameterized query parameterized_query = "SELECT * FROM users WHERE name = %s" # Execute the query with the provided parameter cursor.execute(parameterized_query, ("John Doe",)) # Fetch the results results = cursor.fetchall() # Close the cursor and connection cursor.close() db.close()
パラメータ化されたクエリを使用すると、データベースが事前にクエリ プランを準備できるため、コードが SQL インジェクション攻撃から保護され、クエリのパフォーマンスが向上します。
以上がPython の MySQL でプリペアド ステートメントを使用してクエリのパフォーマンスを向上させ、SQL インジェクションを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。