tatsuki1
@tatsuki1

Ошибка в sqlite3, поможете?

Приветствую. Столкнулся с проблемою, пишет что sqlite.cursor не поддерживает знак "<", либо я что то не правильно сделал.

TypeError: '<' not supported between instances of 'sqlite3.Cursor' and 'int'


@client.command(aliases = ['казино','casino'])
async def casino(ctx, arg:int=None):
    winandlosing = ['Выиграли', 'Проиграли']
    if arg is None:
        await ctx.send(f'{ctx.author.mention}, укажите количество на которое хотите сыграть')
    else:
        cash = cursor.execute(f"SELECT cash FROM users WHERE id = {ctx.author.id}")
        if cash < arg:
            await ctx.send(f'{ctx.author.mention}, у вас недостаточно денег.')
        else:
            da = await ctx.send(f'{ctx.author.mention}, вы {random.choice(winandlosing)}')
            if da == 'Выиграли':
                win = arg*2
                cursor.execute(f'UPDATE users SET cash = {win} WHERE id = {ctx.author.id} ')
                await ctx.send(f'{ctx.author.mention}, вы выиграли, поздравляю, ваш выигрыш удвоен.')
            if da == 'Проиграли':
                cursor.execute(F"UPDATE users SET cash = {arg} WHERE id = {ctx.author.id}")
                await ctx.send(f'{ctx.author.mention}, вы проиграли, в следующий раз повезёт.')
  • Вопрос задан
  • 235 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
cursor.execute возврашает итерируемый генератор результатов. Можно либо пробежаться по нему:

for row in cursor.execute(...):
   cash, = row
   # или
   cash = row[0]


Либо сделать fetchall:

res = cursor.execute(...)
res_list = res.fetchall()
cash = res_list[0][0]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Zoominger
@Zoominger Куратор тега Python
System Integrator
Преобразуйте типы.
У вас вот тут ошибка:
if cash < arg:
Вы сравниваете их, как числа, но, судя по всему, cash не является числом. Сделайте:
(int)cash
Должно помочь.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы