Saya memiliki objek kueri SQLAlchemy dan ingin mendapatkan teks dari pernyataan SQL yang dikompilasi, dengan semua parameternya terikat (misalnya tidak ada %s
atau variabel lain yang menunggu untuk diikat oleh penyusun pernyataan atau mesin dialek MySQLdb, dll).
Memanggil str()
kueri akan mengungkapkan sesuatu seperti ini:
SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
Saya sudah mencoba mencari di query._params tetapi itu adalah dikt yang kosong. Saya menulis kompiler saya sendiri menggunakan contoh sqlalchemy.ext.compiler.compiles
dekorator ini tetapi bahkan pernyataan di sana masih memiliki %s
tempat yang saya inginkan datanya.
Saya tidak tahu kapan parameter saya dicampur untuk membuat kueri; saat memeriksa objek kueri, mereka selalu berupa kamus kosong (meskipun kueri dijalankan dengan baik dan mesin mencetaknya saat Anda mengaktifkan log gema).
Saya mulai mendapatkan pesan bahwa SQLAlchemy tidak ingin saya mengetahui kueri yang mendasarinya, karena hal itu merusak sifat umum antarmuka API ekspresi semua DB-API yang berbeda. Saya tidak keberatan jika kueri dieksekusi sebelum saya menemukan apa itu; Saya hanya ingin tahu!