在SQLAlchemy 中擷取具有實際值的SQL 查詢
使用SQLAlchemy 時,列印正在執行的實際SQL 查詢非常有用,包括使用的具體值,而不是抽象綁定參數。
以下是如何在 SQLAlchemy 中實現此目的:
<code class="python">print(str(statement))</code>
這種簡單的方法適用於 ORM 查詢物件和 select() 或其他語句類型。如果您想要取得編譯為特定方言或引擎的查詢,您可以將適當的參數傳遞給compile():
<code class="python">print(statement.compile(someengine)) print(statement.compile(dialect=postgresql.dialect()))</code>
使用ORM 查詢物件時,先造訪.statement 存取器取得compile()方法:
<code class="python">statement = query.statement print(statement.compile(someengine))</code>
如果您需要將綁定參數內聯到最終字串中,SQLAlchemy對此的支援有限。您可以在呼叫compile()時使用「literal_binds」標誌:
<code class="python">print(s.compile(compile_kwargs={"literal_binds": True}))</code>
但是,這只適用於整數和字串等簡單類型。對於自訂類型,您需要使用 TypeDecorator 和 TypeDecorator.process_literal_param 方法來提供自訂格式:
<code class="python">print( tab.select().where(tab.c.x > 5).compile( compile_kwargs={"literal_binds": True}) )</code>
此方法允許在產生的 SQL 查詢字串中內嵌呈現自訂類型。
以上是如何在 SQLAlchemy 中列印具有實際值的 SQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!