Как в 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 (?, ?, ?, ?);

→ Ссылка