@Max1mKa12

Как обновлять значение в БД?

Как создавать таблицу и обновлять в ней числа win и losse. Создаёт таблицу и добавляет нужное, но не происходит UPDATE. Так же хотел через машину состояний.
spoiler
#Создание таблицы
cur.execute("CREATE TABLE IF NOT EXISTS winka(user_id INTEGER UNIQUE PRIMARY KEY NOT NULL, username TEXT, losse INTEGER, win INTEGER)")
conn.commit()

#Добавление в таблицу
def db_table_val(user_id: int, username: str, losse: int, win: int):
        cur.execute('REPLACE INTO winka (user_id, username, losse, win) VALUES (?, ?, ?, ?)', (user_id , username, losse, win))
        conn.commit()



#Работа куба на число 1
kukb1 = ("!Куб 1", "!куб 1") 
@dp.message_handler(Text (kukb1))
async def cub(message: types.Message):
      sqtest.db_table_val(user_id=message.from_user.id, username=message.from_user.username, win=0, losse=0)
      #Переменные кубика
      kub = await bot.send_dice(message.chat.id)
      kub = kub['dice']['value']
      if 1 < kub:
        await message.reply(text=f"{message.from_user.full_name}\nТы не угадал!\nВыпало: {kub}\nТеперь у тебя мут на 10 минут")
        sqtest.cur.execute (f"SELECT losse FROM winka WHERE user_id == '{message.from_user.id}'") 
        sqtest.cur.execute(f"UPDATE winka SET losse = +1 WHERE user_id == '{message.from_user.id}'")
        await message.answer("прибавлено 1 поражение")
      elif 1 > kub: 
        await message.reply(text=f"{message.from_user.full_name}\nТы не угадал!\nВыпало: {kub}\nТеперь у тебя мут на 10 минут")
        sqtest.cur.execute (f"SELECT losse FROM winka WHERE user_id == '{message.from_user.id}'") 
        sqtest.cur.execute(f"UPDATE winka SET losse = +1 WHERE user_id == '{message.from_user.id}'")
        await message.answer("прибавлено 1 поражение")                                                              
      else:
        await message.reply(text=f"{message.from_user.full_name}\nТЫ ПОБЕДИЛ!\nВыпало: {kub}\nТеперь у тебя мут на 10 минут") 
        sqtest.cur.execute (f"SELECT win FROM winka WHERE user_id == '{message.from_user.id}'") 
        sqtest.cur.execute(f"UPDATE winka SET win = +1 WHERE user_id == '{message.from_user.id}'")
        await message.answer("прибавлена 1 победа")
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
У Вас ошибка в запросе!

UPDATE winka SET losse = losse + 1 WHERE user_id = 1;

UPDATE winka SET win = win + 1 WHERE user_id = 1;


https://sqlize.online/sql/sqlite3/3add68409fbe493d...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi
лужу, паяю, ЭВМы починяю
SET losse += 1
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект