Что не так с этой SQL INSERT?

avatar
Hubris
8 августа 2021 в 23:09
75
2
-2

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

cur.execute("INSERT INTO anime (title, img, synopsis) VALUES (?  ?  ?) WHERE malid = ?", [title, img, synopsis, x])

Я пробовал всевозможные комбинации, но постоянно получаю ошибки, в данном случае просто

sqlite3.OperationalError: near "WHERE": syntax error
Источник
khelwood
8 августа 2021 в 23:13
1

Это не похоже на юридическую вставку. insert означает добавление новой строки. К чему должен применяться пункт where?

khelwood
8 августа 2021 в 23:17
0

Если вы хотите изменить существующую строку, вам нужен оператор update, а не insert.

Ответы (2)

avatar
forpas
9 августа 2021 в 07:15
0

Вы не можете использовать предложение WHERE в операторе INSERT ... VALUES ....

Я подозреваю, что вы хотите обновить строку в таблице, а не вставлять новую строку:

cur.execute("UPDATE anime SET (title, img, synopsis) = (?  ?  ?) WHERE malid = ?", (title, img, synopsis, x))
avatar
Farhad Rad
8 августа 2021 в 23:16
1
Оператор

WHERE не может использоваться в команде INSERT. Он используется только в командах, в которых есть состояние выбора; например UPDATE или SELECT. Логически подумав, нет смысла вставлять и фильтровать одновременно! Все, что попадает в VALUES при использовании команды INSERT, будет добавлено в конец таблицы.