Ошибка при работе с sqlite near syntax error



Что не так между кавычками: «sqlite3.OperationalError: near «̀»: syntax error»? Учусь писать бота, по необходимости, но так ничего и не понял что там?

Ignoring exception in on_ready
Traceback (most recent call last):
File «C:\Users\Kerman\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py», line 343, in _run_event
await coro(*args, **kwargs)
File «C:\Users\Kerman\Desktop\Z-coin 0.0.2\Discord_Bot.py», line 43, in on_ready
cursor.execute(f»INSERT INTO users VALUES(, ‘‘, ‘ ‘, ‘‘, 0, 0)»)#вводит все данные об участнике в БД
sqlite3.OperationalError: near «̀»: syntax error

  • Вопрос задан более года назад
  • 2796 просмотров

Простой 2 комментария

Во-первых, если ты используешь синтаксис INSERT INTO table VALUES (. ), то список значений должен в точности повторять список столбцов. У тебя порядок явно не совпадает. Используй синтаксис INSERT INTO table (столбец, столбец, . ) VALUES (значение, значение, . ), так проще контролировать правильность запроса.

Во-вторых, никогда не формируй строку запроса с помощью форматирования строк! Это хороший способ заполучить SQL-инъекцию, Бобби Тейблз подтвердит. =) Используй плейсхолдеры (поищи строку «Never do this — insecure!», и почитай рядом).

KerMan_KSP,
server_id INT — ‘
Почему в целое поле кладёшь строку? Я же сказал, замени форматирование строк на плейсхолдеры, они сами позаботятся о типах и экранировании.

Далее, ты как, с основами реляционных БД знаком вообще? Если нет, ознакомься. Иначе будешь собирать грабли.
id уникальный для всех записей в таблице? Тогда id INT имеет смысл сделать PRIMARY KEY. Тогда можно будет избавиться от запроса SELECT, использовав синтаксис INSERT OR IGNORE INTO .

Используй синтаксис INSERT INTO table (столбец, столбец, . ) VALUES (значение, значение, . ), так проще контролировать правильность запроса.

Источник

Читайте также:  Directx error 0x80070057 tdr 2000
Оцените статью
toolgir.ru
Adblock
detector