ホームページ  >  記事  >  バックエンド開発  >  SQLAlchemy で SQL クエリを実際の値とともに出力するにはどうすればよいですか?

SQLAlchemy で SQL クエリを実際の値とともに出力するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-18 13:24:30936ブラウズ

How to Print SQL Queries in SQLAlchemy with Actual Values?

SQLAlchemy で実際の値を使用して SQL クエリを取得する

SQLAlchemy を使用する場合、実行されている実際の SQL クエリを出力すると便利です。抽象的なバインド パラメーターではなく、使用されている特定の値。

SQLAlchemy でこれを実現する方法は次のとおりです。

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

この単純なアプローチは、ORM Query オブジェクトと select() の両方で機能します。他のステートメントの種類。特定の方言またはエンジンにコンパイルされたクエリを取得したい場合は、適切な引数を COMPILE() に渡すことができます。

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

ORM Query オブジェクトを使用する場合、最初に .statement アクセサーにアクセスして、コンパイル() メソッドで取得します:

<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.process_literal_param メソッドで TypeDecorator を使用してカスタム書式設定を提供する必要があります。

<code class="python">print(
    tab.select().where(tab.c.x > 5).compile(
        compile_kwargs={"literal_binds": True})
)</code>

このアプローチにより、結果の SQL クエリ文字列でカスタム型をインライン レンダリングできます。

以上がSQLAlchemy で SQL クエリを実際の値とともに出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。