operational error sqlite3
Пытаюсь обновить столбец БД следующей строкой кода:
cursor.execute(f"UPDATE users SET resultintest =f'Число души пользователя:{first}\nЧисло судьбы пользователя:{second}\nЧисло при рассчете 2022 года:{third}' WHERE user_id==f'{message.from_user.id}'")
пишет следующее
cursor.execute(f"UPDATE users SET resultintest =f'Число души пользователя:{first}\nЧисло судьбы пользователя:{second}\nЧисло при рассчете 2022 года:{third}' WHERE user_id==f'{message.from_user.id}'")
sqlite3.OperationalError: near "'Число души пользователя:8 Число судьбы пользователя:11 Число при рассчете 2022 года:5'": syntax error
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
У вас сразу несколько синтаксических ошибок:
- строковые литералы в SQL должны быть "обернуты" одинарными кавычками -
UPDATE users SET resultintest = 'f"..."' ...
-- NOTE: ---------------------> ^ ^
WHERE user_id==f'{message.from_user.id}'"
в SQL нет оператора == - используйте = для сравнения.
Но лучше, проще и безопаснее (SQL Injections) использовать параметризированные запросы - драйвер сам позаботиться об экранировании строк:
upd_val = f'Число души пользователя:{first}\nЧисло судьбы пользователя:{second}\nЧисло при рассчете 2022 года:{third}'
qry = f"""UPDATE users SET resultintest = ? WHERE user_id = ?"""
cursor.execute(qry, [upd_val, message.from_user.id])