SQLAlchemyexecute()中的參數處理
利用SQLAlchemy的connection.execute()將select結果轉換為映射數組可以結果是適用於小型資料集的便捷方法。但是,使用 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() ),以透過建立名為value的參數值字典來支援參數傳遞:
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中文網其他相關文章!