В настоящее время я работаю над ботом Discord, который реализует некоторую экономию на сервере.
При реализации функции добавления элементов в базу данных SQLite я столкнулся с этой проблемой:
cur.execute("INSERT INTO items (?,?,?,?,?,?)", item)
sqlite3.OperationalError: near "?": syntax error
Я уже перешел на "?" в качестве заполнителя благодаря сообщению это и найденному сообщению это, но это мне не очень помогло.
Все значения передаются через аргументы команды в discord и приводятся либо к строке, либо к int. Я использую SQLiteStudio и установил типы данных на «Текст» и «Целое число» соответственно.
conn = create_connection(db_file)
with conn:
cur = conn.cursor()
item = (itemname, price, info_text, buy_text, use_text, role,)
market = (itemname, stock,)
cur.execute("INSERT INTO items (?,?,?,?,?,?)", item)
cur.execute("INSERT INTO market (?,?)", market)





Ваши SQL-запросы недействительны. Синтаксис INSERT - один из
INSERT INTO table VALUES (...)
INSERT INTO table (columns) VALUES (...)
Таким образом, вы сможете изменить свой запрос на
cur.execute("INSERT INTO items VALUES (?,?,?,?,?,?)", item)
и это исправит это. (документы)
Оператор INSERT - это
INSERT INTO table (col1, col2, ...) VALUES (val1, val2, ...), .... Список столбцов является необязательным, если вы вставляете значения для каждого столбца.