提供されたコード スニペットは、connection.execute メソッドを使用して SQL クエリからデータを取得し、結果を配列に変換します。地図。ただし、現在パラメータ化は文字列の書式設定によって処理されており、セキュリティ上のリスクが生じます。
この問題を解決するには、SQLAlchemy の text() 関数を使用してパラメータ化された SQL クエリを生成できます。この関数は SQL 文字列を引数として受け取り、実行中にキーワード パラメーターを使用して値を指定できるようにします。
コードの更新バージョンは次のとおりです。
def __sql_to_data(sql, values): result = [] connection = engine.connect() try: # Convert SQL to parametrized SQL sql_text = sql.text(sql) rows = connection.execute(sql_text, values) for row in rows: result_row = {} for col in row.keys(): result_row[str(col)] = str(row[col]) result.append(result_row) finally: connection.close() return result
この更新されたコード内:
これで、次を使用することで、セキュリティを犠牲にすることなく SQL をパラメータ化できます。 __sql_to_data(sql, 値):
sql = 'SELECT ... WHERE user_id = :user_id' values = { 'user_id' : 3 } results = __sql_to_data(sql, values)
以上がSQLAlchemy の `connection.execute` メソッドにパラメータを安全に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。