Tengo un objeto de consulta SQLAlchemy y quiero obtener el texto de la declaración SQL compilada, con todos sus parámetros vinculados (por ejemplo, ninguna %s
u otras variables esperando ser vinculadas por el compilador de declaraciones o el motor de dialecto MySQLdb, etc.).
Invocar str()
la consulta revela algo como esto:
SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
Intenté buscar en query._params pero es un dict vacío. Escribí mi propio compilador usando este ejemplo del sqlalchemy.ext.compiler.compiles
decorador, pero incluso la declaración allí todavía tiene %s
dónde quiero datos.
No puedo averiguar cuándo se mezclan mis parámetros para crear la consulta; al examinar el objeto de consulta, siempre son un diccionario vacío (aunque la consulta se ejecuta bien y el motor lo imprime cuando activa el registro de eco).
Estoy empezando a recibir el mensaje de que SQLAlchemy no quiere que conozca la consulta subyacente, ya que rompe la naturaleza general de la interfaz de la API de expresión en todas las diferentes DB-API. No me importa si la consulta se ejecuta antes de saber cuál era; ¡Sólo quiero saber!