Eu tenho um objeto de consulta SQLAlchemy e desejo obter o texto da instrução SQL compilada, com todos os seus parâmetros vinculados (por exemplo, nenhuma %s
ou outras variáveis esperando para serem vinculadas pelo compilador de instrução ou mecanismo de dialeto MySQLdb, etc).
Chamar str()
a consulta revela algo assim:
SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
Tentei procurar em query._params, mas é um dicionário vazio. Eu escrevi meu próprio compilador usando este exemplo do sqlalchemy.ext.compiler.compiles
decorador, mas mesmo a instrução lá ainda tem %s
onde eu quero os dados.
Não consigo descobrir quando meus parâmetros se misturam para criar a consulta; ao examinar o objeto de consulta, eles são sempre um dicionário vazio (embora a consulta execute bem e o mecanismo a imprima quando você ativa o log de eco).
Estou começando a receber a mensagem de que SQLAlchemy não quer que eu saiba a consulta subjacente, já que quebra a natureza geral da interface da API de expressão em todos os DB-APIs diferentes. Não me importo se a consulta for executada antes de eu descobrir o que era; Eu só quero saber!