Телеграм бот на пайтоне с Postgresql

Всем привет! Решил запилить проект на aiogram3 u postgresql, но зашёл в тупик. Задача бота принимать ключевый слова и по ним искать в базе данных информацию. То есть если я пишу /search 80 то он должен выдать значения двух игроков по этому параметру(снизу база данных, в данном случае это lennet и pico), но выдаёт только информацию на 1 человека. Я думал попробовать сделать это через циклы for, но не получилось. Вот база:введите сюда описание изображения

А вот код:

@dp.message(Command('search'))
async def search(message: Message):
    #тут будет поиск в бд
    arg =  message.text.split()  #получаем данные юзера
    args = str(arg.pop(1))  #удаляем элемент т.к arg содержит в себе /search
    try:
        connection = psycopg2.connect(  # конектимся к бд
            host="127.0.0.1",
            user="postgres",
            password="staff",
            database="wow_klass№2",
            port="5432"
        )
        connection.autocommit = True  
        zapros  = f"SELECT * FROM spek WHERE nikname = '{args}' OR class = '{args}' OR spek = '{args}' OR profa = '{args}' OR lvl = '{args}';"
        int = f" SELECT COUNT(*) FROM spek WHERE nikname = '{args}' OR class = '{args}' OR spek = '{args}' OR profa = '{args}' OR lvl = '{args}';"
        ##### запрос  в бд
        with connection.cursor() as iner:
            iner.execute(int)
            integer = iner.fetchone()
        with connection.cursor() as cursor:
            cursor.execute(zapros)
            #закончу тут, появился норм запрос и ответ, осталось реализовать больше 1 участника
            tuple = cursor.fetchone()
            nic = str(tuple[0])
            clas = str(tuple[1])
            spek = str(tuple[2])
            prof = str(tuple[3])
            lvl = str(tuple[4])
            await message.answer(f"Ник игрока: {nic}. \nКласс: {clas}. \nСпек: {spek}. \nПрофесия: {prof}. \nlvl: {lvl}")
    except Exception as _ex:
        print(_ex)
    finally:
        if connection:
            connection.close()
            print("Отсоеденился успешно")

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

Автор решения: user19315471

Как должно быть понятно из названия, cursor.fetchone (fetch one) возвращает одну запись.
Для получения всех записей, нужно использовать cursor.fetchmany и затем пройтись циклом по результату.
На каждой итерации цикла можно добавлять в строку данные игроков, чтобы построить одну большую строку со всеми данными. Но нужно учитывать лимиты сообщения в Телеграме.

→ Ссылка