@Mem1388

Как отдельно вывести каждое значение из бд?

Есть таблица с колонками:
Id ║ UserId ║ DateAdded
Если вывести все значения с помощью SELECT *, я получу кортежи:
(1, 524914064653025280, 2021-07-07)
Но мне нужно сделать чтобы бот вывел данные в таком формате:
60e530e178cee993726546.png
Пожалуйста, подскажите как это можно реализовать. Имеющийся код:
async def sqlselectall(ctx, arg):
    try:
        result = ' ║ '.join(name[1] for name in cur.execute(f"PRAGMA table_info({arg})"))
        result2 = ' ║ '.join(f'{val}' for val in cur.execute(f"SELECT * FROM {arg}"))
        emb = discord.Embed(
            title = f'{result}',
            description = f'{result2}',
            color = 0xdb7dbc
        )
        await ctx.send(embed = emb)
    except Exception as e:
        emb = discord.Embed(description = f'**{e}**', color = 0xff0000)
        await ctx.send(embed = emb)
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@o5a
Результат выполнения select в курсоре, как и fetchall() выдает не просто кортеж, а вложенный кортеж, т.е.
((ряд1значение1, ряд1значение2, ряд1значение3... ), (ряд2значение1, ряд2значение2, ряд2значение3... ), ...)

соответственно нужно дополнительно join складывать значения ряда в строку, а затем строки рядов в строку.
result2 = '\n'.join(' ║ '.join(f'{val}' for val in row) for row in cur.execute(f"SELECT * FROM {arg}"))

А если нужно, чтобы это было выровнено, то можно сначала считать данные, затем вычислить в каждом столбце самое длинное значение, и затем уже вывести, отформатировав по наибольшему.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы