Почему не задается значение 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 шт):

Автор решения: gil9red

Потому что при ручном составлении строки запроса, вы ее и получите, проверьте, у вас должен получить такой запрос:

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,))
→ Ссылка