PyODBC: パラメーター変数を使用した Select ステートメントの実行
このシナリオでは、次の条件に基づいてスループット テーブルから行を取得しようとします。 data['DeviceName'] に格納されている特定の DeviceName。ただし、パラメーター変数を使用して SELECT ステートメントを実行しようとした以前の試みは失敗しました。
解決策は、SQL ステートメントでパラメーター化を使用することです。 「?」を使用することで、プレースホルダーを使用し、DeviceName を引数として渡すと、SQL インジェクションやその他のセキュリティ脆弱性からシステムを保護できます。
改訂されたアプローチは次のとおりです。
cursor.execute("SELECT * FROM Throughput WHERE DeviceName = ?", data['DeviceName'])
パラメータ化にはいくつかの利点があります。
改訂されたクエリ スニペットに加えて、参考として実際に動作するコード例の一部を以下に示します。
query = "SELECT * FROM Throughput WHERE DeviceName = '%s'" % data['DeviceName'] try: for row in cursor.execute(query): ...
セキュリティを強化するために、パラメータ化された SQL または動的 SQL を使用するかどうかに関係なく、ユーザー入力を必ず検証してください。
以上がPyODBC SELECT ステートメントでパラメーター変数を安全に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。