Почему не задается значение None в sqlite3 python
Пытаюсь задать значение None в колонку с название USERNAME через команду UPDATE
cur.execute(f"UPDATE users SET USERNAME = {None} WHERE ID = {1829785381}")
Нужно задать именно занчение NoneType, не строку со значением 'None', выдает ошибку
sqlite3.OperationalError: no such column: None
Подскажите может не правильно оформляю команду вплане синтаксиса?
Ответы (1 шт):
Потому что при ручном составлении строки запроса, вы ее и получите, проверьте, у вас должен получить такой запрос:
UPDATE users SET USERNAME = None WHERE ID = 1829785381
А None в текущем контексте будет выглядеть как столбец этой же таблице
Вместо ручного формирования, лучше используйте биндинги:
cur.execute(f"UPDATE users SET USERNAME = ? WHERE ID = ?", (None, 1829785381))
P.S.
Вообще, в SQL вместо питоничьего None используется null, драйвер базы данных сам это сконвертирует, если использовать биндинги, но вы можете это сделать и сами, указав null в запросе:
cur.execute(f"UPDATE users SET USERNAME = null WHERE ID = {1829785381}")
Или:
cur.execute(f"UPDATE users SET USERNAME = null WHERE ID = ?", (1829785381,))