Ich habe ein SQLAlchemy-Abfrageobjekt und möchte den Text der kompilierten SQL-Anweisung mit allen gebundenen Parametern %s
abrufen (z. B. keine oder andere Variablen, die darauf warten, vom Anweisungscompiler oder der MySQLdb-Dialekt-Engine usw. gebunden zu werden).
Das Aufrufen str()
der Abfrage zeigt ungefähr Folgendes:
SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
Ich habe versucht, in query._params zu suchen, aber es ist ein leeres Diktat. Ich habe meinen eigenen Compiler anhand dieses Beispiels des sqlalchemy.ext.compiler.compiles
Dekorateurs geschrieben, aber selbst die dortige Anweisung enthält noch %s
Daten.
Ich kann nicht genau herausfinden, wann meine Parameter zum Erstellen der Abfrage gemischt werden. Bei der Untersuchung des Abfrageobjekts handelt es sich immer um ein leeres Wörterbuch (obwohl die Abfrage einwandfrei ausgeführt wird und die Engine sie ausdruckt, wenn Sie die Echoanmeldung aktivieren).
Ich bekomme allmählich die Meldung, dass SQLAlchemy nicht möchte, dass ich die zugrunde liegende Abfrage kenne, da dies die allgemeine Natur der Schnittstelle der Ausdrucks-API in allen verschiedenen DB-APIs beeinträchtigt. Es macht mir nichts aus, wenn die Abfrage ausgeführt wird, bevor ich herausgefunden habe, was es war. Ich will nur wissen!