Почему выводит None вместо числа?

Есть телеграмм бот на aiogram, подключил туда бд и добавил строку ballance где хранится число, при выводе ballance выводит None

class Get в бд:
    
    def get_ballance(user_id):
        cur.execute('SELECT 2 FROM users WHERE user_id == "{}"'.format(user_id)).fetchone()

Обработчик команды ballance:

@router.message(Command('ballance'))
async def ballance_msg(message: Message):
    ballance = Get.get_ballance(user_id=message.from_user.id)
    await message.answer(f'Ваш баланс: {ballance}')

UPD чутка изменил код Class Get в бд:

int = cur.execute('SELECT 2 FROM users WHERE user_id == "{}"'.format(user_id)).fetchone()
return (int)

Теперь вывод:

  Ваш баланс: (0,) 

как убрать скобки и запятую?


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

Автор решения: Thommy Serpentes

Измени метод запроса баланса во-первых на запрос с подстановкой данный через параметры, форматирование запроса плохой выбор ввиду подверженности атаке SQL Injection. Во-вторых fetchone дает кортеж, поэтому неоходимо обратиться по индексу 0 чтобы достать значение

def get_balance(user_id):
    return cur.execute('SELECT 2 FROM users WHERE user_id = :user_id;', {"user_id": user_id}).fetchone()[0]
→ Ссылка