@Leqort

Почему выдает ошибку "sqlite3.OperationalError: near "users": syntax error"?

Здравствуйте! Столкнулся с проблемой, при создании в базе данных юзера, почему то выдает ошибку:
Traceback (most recent call last):
  File "c:\Games\Telegram Bot\main.py", line 50, in <module>
    bot.polling(none_stop=True)
  File "C:\Games\Python\Lib\site-packages\telebot\__init__.py", line 1043, in polling
    self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "C:\Games\Python\Lib\site-packages\telebot\__init__.py", line 1118, in __threaded_polling
    raise e
  File "C:\Games\Python\Lib\site-packages\telebot\__init__.py", line 1074, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Games\Python\Lib\site-packages\telebot\util.py", line 156, in raise_exceptions
    raise self.exception_info
  File "C:\Games\Python\Lib\site-packages\telebot\util.py", line 100, in run
    task(*args, **kwargs)
  File "C:\Games\Python\Lib\site-packages\telebot\__init__.py", line 6308, in _run_middlewares_and_handler
    result = handler['function'](message)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Games\Telegram Bot\main.py", line 24, in start
    cursor.execute("INSERT OR REPLACE users VALUES(?, ?, ?);", (user_id, money, bitcoins))
sqlite3.OperationalError: near "users": syntax error

import telebot
from telebot import types
import sqlite3

bot = telebot.TeleBot('Tyt token')

@bot.message_handler(commands=['start'])
def start(message):
    global connect, cursor, money, bitcoins

    connect = sqlite3.connect("base.db")
    cursor = connect.cursor()
    money = 0
    bitcoins = 0

    cursor.execute("""CREATE TABLE IF NOT EXISTS users(
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        money BIGINT,
        bitcoin BIGINT
        )""")
    connect.commit()

    user_id = [message.chat.id]
    cursor.execute("INSERT OR REPLACE users VALUES(?, ?, ?);", (user_id, money, bitcoins))
    connect.commit()



    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)

    stats = types.KeyboardButton("Статистика")    
    bitcoin_rate = types.KeyboardButton("Биткоин курс")

    markup.add(stats, bitcoin_rate)

    bot.send_message(message.chat.id, f"Привет, <b>{message.from_user.username}</b>", reply_markup=markup, parse_mode="html")


@bot.message_handler(content_types=['text'])
def sended_message_on_user(message):
    if message.chat.type == 'private':
        if message.text == 'Статистика':
            bot.send_message(message.chat.id, f"Статистика {message.from_user.username}\nДеньги: <b>Бебра</b>", parse_mode="html")
        elif message.text == 'Биткоин курс':
            bot.send_message(message.chat.id, f"Банк\n\nКурс биткоина: <b></b>", parse_mode="html")
        else:
            bot.send_message(message.chat.id , "<b>Неизвестная команда</b>", parse_mode="html")
            print(f"{message.from_user.username}, ввел неверную команду.")

bot.polling(none_stop=True)
  • Вопрос задан
  • 817 просмотров
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
query = """INSERT OR REPLACE INTO users 
(id, money, bitcoin) 
VALUES(?, ?, ?);"""
cursor.execute(query, (user_id, money, bitcoins))
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@TKDBOT
Учу python. Готов к конструктивной критике.
Ты пытаешься записать user id, а в таблице нет такого заголовка.
Т.е. ты создал таблицу с 3 полями. Id, money и bitcoin. А потом хочешь записать куда-то user id.

И проверь запрос на добавление данных.
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
INSERT OR REPLACE INTO users
Читаем документацию, не ленимся.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽