Python, telebot, oracle
Ситуация следующая:
- В запросе через sql и принт в python при введении 'where skucode = "053w405"' в БД две записи. Фактически бот посылает первую запись. Я не могу понять как создать второе сообщение со второй записью.
- Плюс к этому не могу сделать форматирование даты в формат 'dd.mm.yyyy' (без времени) двух столбцов 'prod_date, end_date'. Предполагаю что нужно делать это через переменную.
def ost_ekat(message):
ekt=sql.execute(f"select skucode, sname, qty, prod_date, end_date, percent from v_sea_ostatki_bot where wid = 0 and skucode = '{message.text}'")
ekt=sql.fetchall()
if ekt:
msg = bot.send_message (message.chat.id, f"Код товара: {ekt[0][0]}\nНаименование: {ekt[0][1]}\nОстаток: {ekt[0][2]}\nДата производства: {ekt[0][3]}\nСрок годности: {ekt[0][4]}\nПроцент:{ekt[0][5]}")
bot.register_next_step_handler(msg, start)
else:
msg = bot.send_message(message.chat.id, "Нет остатка на складе")
bot.register_next_step_handler(msg, start)
Ответы (1 шт):
Автор решения: Alpensin
→ Ссылка
Если я правильно вас понял, то как-то так.
from datetime import datetime
def prepare_date(date):
if isinstance(date, datetime):
return date.strftime('%d.%m.%Y')
return 'N/A'
def ost_ekat(message):
ekt=sql.execute(f"select skucode, sname, qty, prod_date, end_date, percent from v_sea_ostatki_bot where wid = 0 and skucode = '{message.text}'")
ekt=sql.fetchall()
if ekt:
msg_text = "\n".join(f"Код товара: {row[0]}\nНаименование: {row[1]}\nОстаток: {row[2]}\nДата производства: {prepare_date(row[3])}\nСрок годности: {prepare_date(row[4])}\nПроцент:{row[5]}" for row in ekt)
msg = bot.send_message(message.chat.id, msg_text)
bot.register_next_step_handler(msg, start)
else:
msg = bot.send_message(message.chat.id, "Нет остатка на складе")
bot.register_next_step_handler(msg, start)