Почему выводит 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]