sqlite3 с python - отладка запроса - печать окончательного запроса - PullRequest
1 голос
/ 30 марта 2012

Я пытаюсь отладить оператор SQL, сгенерированный с помощью sqlite3 модуля python ...

c.execute("SELECT * FROM %s WHERE :column = :value" % Photo.DB_TABLE_NAME, {"column": column, "value": value})

Он не возвращает строк, когда я fetchall()

Когда я запускаю это непосредственно в базе данных

SELECT * FROM photos WHERE album_id = 10

Я получаю ожидаемые результаты.

Есть ли способ увидеть построенный запрос, чтобы увидеть, в чем проблема?

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

проблема здесь в том, что строковые значения автоматически заключаются в одинарные кавычки. Вы не можете динамически вставлять имена столбцов таким образом.

Что касается вашего вопроса, я не уверен насчет sqlite3, но в MySQLdb вы можете получить окончательный запрос примерно так (я сейчас не за компьютером для проверки):

statement % conn.literal(query_params)
0 голосов
/ 30 марта 2012

Параметры подстановки можно использовать только для значений строк, но не для имен столбцов или таблиц.

Таким образом, :column в SELECT * FROM %s WHERE :column = :value не допускается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...