Python, telebot, oracle

Ситуация следующая:

  1. В запросе через sql и принт в python при введении 'where skucode = "053w405"' в БД две записи. Фактически бот посылает первую запись. Я не могу понять как создать второе сообщение со второй записью.
  2. Плюс к этому не могу сделать форматирование даты в формат '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)
→ Ссылка