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