首頁 > 後端開發 > Python教學 > 如何取得SQLAlchemy中實際執行的SQL查詢?

如何取得SQLAlchemy中實際執行的SQL查詢?

Mary-Kate Olsen
發布: 2024-10-18 13:15:03
原創
1102 人瀏覽過

How to Obtain the Actual SQL Query Executed in SQLAlchemy?

在 SQLAlchemy 中列印實際的 SQL 查詢

在 SQLAlchemy 中執行 SQL 查詢涉及綁定參數以防止 SQL 注入攻擊。然而,取得實際的 SQL 查詢(包括值)可能具有挑戰性。

一般解

以字串形式擷取SQL 查詢的最簡單方法是使用str() 函數:

<code class="python">print(str(statement))  # for both ORM Query and SQL statements</code>
登入後複製

綁定參數實作

預設情況下,出於安全原因,SQLAlchemy 會綁定參數。您可以使用compile_kwargs中的literal_binds標誌來抑制此行為:

<code class="python">from sqlalchemy.dialects import postgresql

print(
    statement.compile(compile_kwargs={"literal_binds": True})
)</code>
登入後複製

請注意,文字綁定僅支援整數和字串等基本類型。

自訂參數轉換

如果您需要轉換更複雜的類型,您可以使用process_literal_param 方法建立自訂TypeDecorator:

<code class="python">class MyFancyType(TypeDecorator):
    impl = Integer

    def process_literal_param(self, value, dialect):
        return "my_fancy_formatting(%s)" % value

print(
    tab.select().where(tab.c.x > 5).compile(
        compile_kwargs={"literal_binds": True})
)</code>
登入後複製

這將產生以下查詢:
<code class="sql">SELECT mytable.x
FROM mytable
WHERE mytable.x > my_fancy_formatting(5)</code>
登入後複製

以上是如何取得SQLAlchemy中實際執行的SQL查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板