Боюсь, совет тут будет "поучиться программированию и работе с базами данных в целом". Вот кроме шуток.
1. Зачем проходиться по базе циклом, если можно написать простейшей SELECT с фильтрацией блоком WHERE?
2. Зачем объявлять бота и обработчик событий внутри этого цикла? У вас выживет только последняя копия для последней строки.
Короче, итоговый код должен иметь приблизительно такой вид:
@bot.message_handler()
def start(message):
cursor = connection.cursor()
row = cursor.execute('SELECT фамилия FROM OPCFIO WHERE имя = %s LIMIT 1', (message.text,) ).fetchone()
if row is None:
# не нашли фамилию, реакцию на это пропиши сам
else:
last_name = row[0] # нашли, она лежит в last_name, делаем с ней что нужно
И НИКАКОГО ЦИКЛА ПО ВСЕЙ БД.