Как в SQLite правильно выполнить запрос с условием?
Имеем запрос, в котором нужно заполнить поля в БД значениями из переменных (var...)
cur.execute("INSERT INTO dbname(col1, col2, col3, col4) VALUES (?, ?, ?, ?)", (var1, var2, var3, var4))
db.commit()
Как сделать чтобы запрос не выполнялся, если значение var1 уже существует в col1 ?
Знаю, что нужно использовать условие WHERE... но как его использовать правильно в этом запросе, не могу понять (только учусь), подскажите пожалуйста
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
-- Дает возможность обновить данные в случае совпадения ключа
-- Предположим что ключ col1
INSERT INTO dbname(col1, col2, col3, col4) VALUES (?, ?, ?, ?)
on conflict (col1) do update
set
col2 = excluded.col2,
col3 = excluded.col3,
col4 = excluded.col4;
-- Работает так-же как INSERT or IGNORE
INSERT INTO dbname(col1, col2, col3, col4) VALUES (?, ?, ?, ?)
on conflict (col1) do nothing;
-- Ну и собственно
INSERT or IGNORE INTO dbname(col1, col2, col3, col4) VALUES (?, ?, ?, ?);