Как сделать функцию сравнение (== 1:, > 1:) полученных ответов (из базы SQLite) в Python
Сделал функцию которая ищет преподавателя и передает значение (полное ФИО) в клавиатуру для выбора, а после выбора в другую функцию (которая сохраняет).
Как разбить результат этой функции, если нашло только одного (== 1:) преподавателя передать сразу значение в другую функцию, а если несколько (> 1:) то вызывается клавиатура с найденными преподавателями (как в этой функции)?
Функция:
def set_name_teachers(message):
if message.text == KEYBOARD['GRUPA_CANCEL']:
msg = f"Отмена"
bot.send_message(message.chat.id, msg, reply_markup=keyboard)
return
conn = sqlite3.connect(settings.DATA_BASE)
cursor = conn.cursor()
sql = """SELECT teacher_name FROM import_teachers WHERE lower(teacher_name) like ? ORDER BY teacher_name;"""
query = "%{}%".format(message.text.casefold())
query = query.title()
cursor.execute(sql, (query,))
teachers_list = cursor.fetchall()
if not teachers_list:
sent = bot.send_message(message.chat.id, 'Не могу найти преподавателя с такой фамилией. Попробуйте еще раз.')
bot.register_next_step_handler(sent, set_name_teachers)
return
else:
kb_teach_grup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
msg = f"Выберите из списка:"
for ln in teachers_list:
kb_teach_grup.row(ln[0])
kb_teach_grup.row(KEYBOARD['TEACHER_CANCEL'])
sent = bot.send_message(message.chat.id, msg, reply_markup=kb_teach_grup, parse_mode='HTML')
bot.register_next_step_handler(sent, add_user_teacher)
conn.commit()
conn.close()
Ответы (1 шт):
Автор решения: torrua
→ Ссылка
Вам нужно простое условие, проверяющее количество преподавателей в списке:
if not teachers_list:
# код для ситуации, если преподавателей нет
...
elif len(teachers_list) == 1:
# код для ситуации, если преподаватель один
...
else:
# код для ситуации, если преподавателей несколько
...