У меня есть объект запроса SQLAlchemy, и я хочу получить текст скомпилированного оператора SQL со всеми его параметрами (например, никакие %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 выражений для всех различных API-интерфейсов DB. Я не возражаю, если запрос будет выполнен до того, как я узнаю, что это было; Я просто хочу знать!