Проблемы с выводом из бд
Делаю бота для дискорда и столкнулся с проблемой вывода из бд значений с таблицы в эмбет дискорда, то есть выводит у меня [(1,)], а нужно просто цифру
async def boss(ctx):
await ctx.channel.purge(limit=1)
author = ctx.message.author
emb = discord.Embed(title ='**КЛАНОВАЯ ИГРА**', description = '**КРАТОСС**', colour = discord.Color.purple())
emb.add_field(name = 'Уровень:', value = cur.execute(f'SELECT lvl FROM DiscordBossData WHERE userid = {ctx.author.id}').fetchmany(), inline= False)
Выводит: КЛАНОВАЯ ИГРА КРАТОСС Уровень: [(1,)] А нужно: КЛАНОВАЯ ИГРА КРАТОСС Уровень: 1
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Вы используете .fetchmany(), этот метод нужен для возврата списка записей, а записями будут кортежи (в вашем случае на 1 элемент lvl):
emb.add_field(name = 'Уровень:', value = cur.execute(f'SELECT lvl FROM DiscordBossData WHERE userid = {ctx.author.id}').fetchmany(), inline= False)
Вам нужно использовать метод fetchone:
result = cur.execute(f'SELECT lvl FROM DiscordBossData WHERE userid = {ctx.author.id}').fetchone()
emb.add_field(name='Уровень:', value=result[0], inline=False)
PS.
Не рекомендую передавать параметры явно в строку запроса, а использовать биндинги (bindings), это упрощает запрос при куче параметров и избавляет от возможных sql-инъекций:
result = cur.execute('SELECT lvl FROM DiscordBossData WHERE userid=?', [ctx.author.id]).fetchone()