Как спарсить значения из result[i]
Вспомогательные функции. Находятся в модуле helper
async def product_key(title, amount, payments):
width = 57
if amount >= 1000 and amount <= 1000000:
amount //= 1000
amount = f'{amount}K'
else:
amount = str(amount)
len_title = width - len(amount) - len(str(payments)) - 3
title = title[0: len_title] + '...'
text = f'{payments} | {amount} | {title}'
return text
async def postgresql(sql):
connect_postgresql = await asyncpg.connect(user=user, password=password, host=host, port=port, database=database)
await connect_postgresql.execute(sql)
if 'SELECT' in sql:
return await connect_postgresql.fetch(sql)
await connect_postgresql.close()
Это основной код, который достает с БД данные и пытается 'разложить всё по полочкам'
key = InlineKeyboardMarkup()
result = await helper.postgresql(f"SELECT id, title, amount, payments FROM products;")
for i in range(1, 5):
for tr in result[i]:
print(result[i])
print(tr)
for id, title, amount, payments in tr:
key.add(InlineKeyboardButton(text=await helper.product_key(title, amount, payments), callback_data=id))
#Пагинация пока не работает
key.add(InlineKeyboardButton(text='<<<', callback_data=' '),
InlineKeyboardButton(text='125 / 140', callback_data=' '),
InlineKeyboardButton(text='>>>', callback_data=' '))
Вывод на print(result[i]):
<Record id=702 title='lacus at velit vivamus vel nulla eget eros elementum pellentesque' amount=2 payments='21,00 ₽'>
Ввод на print(tr):
702
Вопрос в том как спарсить значения из print(result[i]) в значения id, title, amount, payments
А вот то что я хочу увидеть
Ответы (1 шт):
Автор решения: v1nc3nt_0'ne1ll
→ Ссылка
Ответ на ваш вопрос очень очевидный
async def show_products(callback, state):
key = InlineKeyboardMarkup()
start = 32 #пример
end = 49 #пример
result = await helper.postgresql(f"SELECT id, title, amount, payments FROM products;")
for i in range(start, end):
#Вот здесь решение вашего вопроса
id, title, amount, payments = result[i]
key.add(InlineKeyboardButton(text=await helper.product_key(title, amount, payments), callback_data=id))
text = 'Какой-то текст'
await bot.send_message(callback.from_user.id, text, reply_markup=key)
