У меня есть объект запроса SQLAlchemy и вы хотите получить текст скомпилированного оператора SQL со всеми его параметрами (например, no %s
или другие переменные, ожидающие привязки компилятором оператора или диалогическим движком MySQLdb и т.д.)..
Вызов str()
по запросу показывает что-то вроде этого:
SELECT id WHERE date_added <= %s AND date_added >= %s ORDER BY count DESC
Я пробовал искать в query._params, но это пустой dict. Я написал свой собственный компилятор, используя этот пример декоратора sqlalchemy.ext.compiler.compiles
, но даже в заявлении все еще есть %s
, где мне нужны данные.
Я не могу понять, когда мои параметры смешиваются для создания запроса; при исследовании объекта запроса они всегда являются пустым словарем (хотя запрос выполняется отлично, и двигатель выводит его при включении эхо-журнала).
Я начинаю получать сообщение о том, что SQLAlchemy не хочет, чтобы я знал базовый запрос, поскольку он нарушает общий характер интерфейса API выражения всех разных DB-API. Я не возражаю, если запрос выполняется, прежде чем я узнаю, что это такое; Я просто хочу знать!