Как выводить все элементы из Бд?

У меня в бд есть колонка TEXT, в которой хранится словарь. Вопрос такой - как вытащить оттуда все элементы?

cur.execute("""CREATE TABLE IF NOT EXISTS info (
    id INT,
    cards TEXT,
    wins INT,
    defeat INT,
    duel TEXT
)""")
con.commit()
...
cur.execute(f"""INSERT INTO info (id, cards, wins, defeat, duel) VALUES ({member.id}, '[]', 0, 0, Null)""")
...
test = cur.execute(f"""SELECT cards FROM info WHERE id = {ctx.author.id}""").fetchone()[0]
print(test) #["", "", ""]

Ответы (2 шт):

Автор решения: Dmitry Nekrasov

Вам следует сначала выполнить запрос

test = cur.execute(f"""SELECT cards FROM info WHERE id = {ctx.author.id}""")

затем уже работать с данными

print(test.fetchone()[0])

В качестве примера:

cur.execute(f"""INSERT INTO info (id, cards, wins, defeat, duel) \
    VALUES (1, '["test1", "Тест"]', 0, 0, Null)""")
test = cur.execute(f"""SELECT cards FROM info WHERE id = 1""")
print(test.fetchone()[0])

["test1", "Тест"]

Данные, полученные с помощью fetchone()[0], будут иметь тип данных str, поэтому для удобства работы с ними их можно привести к соответствующему виду с помощью библиотеки ast

print(type(test.fetchone()[0]))
>> <class 'str'>

data = ast.literal_eval(test.fetchone()[0]))
print(type(data), data)
>> <class 'list'> ['test1', 'Тест']

Теперь с данными можно работать как с обычным списком.

→ Ссылка
Автор решения: q r t s

Это довольно просто.

   for test in cursor.execute(f"SELECT ... FROM ... WHERE id = {ctx.author.id}"):
  1. Вместо "test" можно вписать что угодно.
  2. SELECT ... - получаем необходимые категории из таблицы.
  3. FROM ... - название таблицы.

Предположим мы хотим вывести имя и айди пользователя.

   for test in cursor.execute(f"SELECT name, id FROM users WHERE id = {ctx.author.id}"):

Далее по нумерации вытаскиваем из таблицы значения. Нумерация в таблице начинается с 0. И так:

    print(f"Получено сообщение от пользователя {test[0]}. ID: {test[1]}")
→ Ссылка