揭示SQLAlchemy 表達式背後的原始編譯SQL
使用SQLAlchemy 查詢物件時,可能需要取得實際的,SQLSQL語句以深入了解底層資料庫操作。然而,檢索帶有完全綁定參數的原始查詢可能具有挑戰性。
一種方法是在編譯查詢語句時利用compile_kwargs 中的literal_binds 參數。如下圖所示:
print(q.statement.compile(compile_kwargs={"literal_binds": True}))
此方法輸出編譯後的 SQL 查詢,並直接插入參數,有效地消除了對 %s 等佔位符的需要。然而,值得注意的是,這種技術僅限於簡單類型,如整數和字串。如果使用沒有預先定義值的bindparam(),它將不會包含在輸出中。
文件強調在對不受信任的輸入使用此方法時要小心謹慎。它建議不要對使用者提供的資料使用此技術,因為 SQLAlchemy 將 Python 值強制轉換為 SQL 字串的機制缺乏針對不受信任輸入的安全性。相反,它強烈提倡使用綁定參數來以程式設計方式呼叫非 DDL SQL 語句。
以上是如何從 SQLAlchemy 查詢中顯示原始的編譯 SQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!