Могу ли я получить необработанный SQL, сгенерированный подготовленным оператором в модуле sqlite3 Python? - PullRequest
0 голосов
/ 11 мая 2010

Если так, как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 11 мая 2010

При выполнении подготовленного оператора новый SQL не генерируется. Идея подготовленных операторов заключается в том, что запрос SQL и его данные передаются отдельно (поэтому вам не нужно избегать каких-либо аргументов) - запрос, скорее всего, сохраняется только в оптимизированной форме после его подготовки.

1 голос
/ 11 мая 2010

когда вы создаете подготовленный оператор, «шаблонный» код SQL уже отправляется в СУБД, которая компилирует его в дерево выражений. Когда вы передаете значения, соответствующая библиотека (модуль python sqlite3 в вашем случае) не объединяет значения в операторе. СУБД делает.

Если вы все еще хотите создать нормальную строку SQL, вы можете использовать функции замены строк, чтобы заменить заполнители на значения (после их экранирования).

Зачем вам это нужно?

...