首頁 >後端開發 >Python教學 >如何在 SQLAlchemy 中列印具有實際值的 SQL 查詢?

如何在 SQLAlchemy 中列印具有實際值的 SQL 查詢?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-18 13:24:301048瀏覽

How to Print SQL Queries in SQLAlchemy with Actual Values?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn