首頁 >後端開發 >Python教學 >如何在 SQLAlchemy 中顯示實際的 SQL 查詢?

如何在 SQLAlchemy 中顯示實際的 SQL 查詢?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-18 13:20:03962瀏覽

How to Display Actual SQL Queries in SQLAlchemy?

在SQLAlchemy 中列印實際的SQL 查詢

在SQLAlchemy 中,了解如何顯示與資料庫操作相對應的原始SQL 至關重要。這對於排除故障、調試和優化應用程式的資料庫通訊至關重要。

一般方法

在大多數情況下,您可以輕鬆查看語句的SQL 字串表示形式或查詢:

<code class="python">print(str(statement))</code>

這適用於ORM 查詢和原始select() 表達式。

編譯為特定方言

If您需要查看針對特定方言或引擎編譯的SQL,可以使用compile()方法:

<code class="python">print(statement.compile(someengine))</code>

或不使用引擎:

<code class="python">from sqlalchemy.dialects import postgresql
print(statement.compile(dialect=postgresql.dialect()))</code>

內聯綁定參數

SQLAlchemy 中的預設行為是在SQL 字串中使用綁定參數,透過防止SQL 注入攻擊來確保安全性。若要繞過綁定參數和內聯實際值,請在compile_kwargs中使用literal_binds標誌:

<code class="python">print(s.compile(compile_kwargs={"literal_binds": True}))</code>

對於此方法不支援的自訂類型,請使用process_literal_param方法實作TypeDecorator :

<code class="python">class MyFancyType(TypeDecorator):
    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>

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

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