ホームページ >バックエンド開発 >Python チュートリアル >SQLAlchemy で SQL クエリを実際の値とともに出力するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。