ホームページ >データベース >mysql チュートリアル >SQLAlchemy 式から生のコンパイル済み SQL を取得するにはどうすればよいですか?
SQLAlchemy 式から生のコンパイル済み SQL を取得する
SQLAlchemy では、式オブジェクトから生のコンパイル済み SQL クエリを取得するのが困難な場合があります。式 API は便利なインターフェイスを提供しますが、基礎となる SQL が表示されなくなります。
パラメータの検索に苦労しています
query._params ディクショナリを検査しましたが、次のことが見つかりました。クエリは正常に実行されたにもかかわらず、空です。これは、SQLAlchemy が意図的にパラメーターをクエリ オブジェクト内にカプセル化したままにするためです。そうすることで、さまざまな DB-API との互換性が確保されます。
リテラル バインディングの使用
ただし、SQLAlchemy ドキュメントでは、literal_binds を使用する回避策を提供しています。
print(q.statement.compile(compile_kwargs={"literal_binds": True}))
この方法では、パラメータを含むクエリ ステートメントを出力できます。ただし、これは基本的な型 (整数、文字列など) にのみ適しており、事前定義された値のない bindingparam() はサポートされません。
セキュリティ上の注意
ドキュメント信頼できない入力に対してこの手法を使用しないことを強くお勧めします。 SQLAlchemy の型強制メカニズムは確実ではなく、セキュリティ上の脆弱性を引き起こす可能性があります。
結論
デフォルトでは直接公開されませんが、生のコンパイル済み SQL は SQLAlchemy から取得できます。 literal_binds キーワード引数を使用した式。ただし、信頼できないデータを扱う場合は注意が必要です。
以上がSQLAlchemy 式から生のコンパイル済み SQL を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。