ホームページ >データベース >mysql チュートリアル >SQLAlchemy の `execute()` 関数でパラメータを安全に処理するにはどうすればよいですか?
SQLAlchemy use() でのパラメータ処理
SQLAlchemy の connection.execute() 関数を使用して、選択結果をマップの配列に変換することができます。小規模なデータセットに便利なアプローチです。ただし、format() を使用して SQL クエリにパラメータを追加すると、セキュリティ上の懸念が生じる可能性があります。
パラメータ処理メカニズムを改善するには、次の手法の活用を検討してください。
SQLAlchemy.sql.text を使用する() パラメータ化された SQL 文字列
を使用してパラメータ化された SQL 文字列を作成しますSQLAlchemy.sql.text():
sql = text( "SELECT users.fullname || ', ' || addresses.email_address AS title " "FROM users, addresses " "WHERE users.id = addresses.user_id " "AND users.name BETWEEN :x AND :y " "AND (addresses.email_address LIKE :e1 " "OR addresses.email_address LIKE :e2)")
キーワード引数としてパラメータを指定
パラメータ化された SQL 文字列の実行中に、パラメータ値をキーワードとして指定して実行します() 関数:
conn.execute(sql, {"x": "m", "y": "z", "e1": "%@aol.com", "e2": "%@msn.com"}).fetchall()
を組み込むカスタム関数の動的パラメータ
必要に応じて、カスタム関数 (この例では __sql_to_data() ) を変更して、パラメータ値の値と呼ばれるディクショナリを作成してパラメータの受け渡しをサポートします。
def __sql_to_data(sql, values): ... conn.execute(sql, values)
その後、パラメータの辞書を使用して関数を呼び出すことができます。
sql = 'SELECT ...' data = {'user_id': 3} results = __sql_to_data(sql, data)
これらのアプローチを採用することで、SQLAlchemy のexecute() 関数でのパラメータ処理のセキュリティと柔軟性を強化できます。
以上がSQLAlchemy の `execute()` 関数でパラメータを安全に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。