SQLAlchemyクエリオブジェクトがあり、すべてのパラメーターがバインドされた(たとえば%s
、ステートメントコンパイラーまたはMySQLdbダイアレクトエンジンによってバインドされるのを待っている変数がないなど)、コンパイルされたSQLステートメントのテキストを取得します。
str()
クエリを呼び出すと、次のようなことがわかります。
SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
query._paramsを調べてみましたが、空の辞書です。私はこのsqlalchemy.ext.compiler.compiles
デコレータの例を使用して独自のコンパイラを作成しましたが、そこにあるステートメントでさえ、%s
データが必要な場所にまだあります。
クエリを作成するためにパラメーターが混在するタイミングがよくわかりません。クエリオブジェクトを調べるとき、それらは常に空のディクショナリです(ただし、クエリは正常に実行され、エコーロギングをオンにするとエンジンが出力します)。
SQLAlchemyは、基になるクエリを知りたくないというメッセージを受け取り始めています。これは、さまざまなDB-APIのすべての式APIのインターフェイスの一般的な性質を破壊するためです。クエリが何であるかがわかる前にクエリが実行されてもかまいません。ただ知りたいだけです!