SQLite 3 Ошибка при использовании строки параметра, но не при неявном вводе - PullRequest
0 голосов
/ 23 марта 2019

У меня есть фрагмент кода из моей программы на python 2.7:

cur.execute("UPDATE echo SET ? = ? WHERE ID = ?", (cur_class, fdate, ID,))

, который при запуске продолжает выдавать следующую ошибку:

sqlite3.OperationalError: near "?": syntax error

Предполагается, что программа вставит сегодняшнюю дату в столбец класса, который соответствует предоставленному идентификатору студента.Если я уберу первый "?"как и в жестком коде параметра:

cur.execute("UPDATE echo SET math = ? WHERE ID = ?", (fdate, ID,))

все работает просто отлично.Я погуглил повсюду и не нашел ничего, что работает, поэтому я выбрасываю спасательный круг.Я пробовал одинарные кавычки, двойные кавычки, с круглыми скобками и без них, а также несколько других вещей, которые я сейчас не могу вспомнить.Пока что ничего не работает, кроме жесткого кодирования этого первого параметра, который действительно неудобен.

В качестве шага устранения неполадок я заставил мою программу напечатать type () каждой из переменных, и все они являются строками.Тип данных поля cur_class - VARCHAR, fdate - DATE, а ID - VARCHAR.

1 Ответ

0 голосов
/ 23 марта 2019

Благодаря подсказке от @Shawn ранее я решил проблему с помощью следующего кода, и он прекрасно работает:

sqlcommand = "UPDATE echo SET " + cur_class + " = " + fdate + " WHERE ID = " + ID cur.execute(sqlcommand)

Таким образом python выполняет тяжелую работу и создает мою строку со всеми раскрытыми переменными, а затем db выполняет правильно отформатированную команду SQL.

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