Что не так между кавычками: «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 (значение, значение, . ), так проще контролировать правильность запроса.