Как удалить строку из MySQL через pyTelegrambot
Пишу пошаговое создание анкеты через телеграм бота. Тут окончание создания, запись вносится в БД
def process_about_step(message):
try:
user_id = message.from_user.id
user = user_dict[user_id]
about = message.text
user.about = about
bot.send_message(message.chat.id, 'Нужная информация собрана!\n\nВот твоя анкета:\n\n' + user.city + '\n' + user.name + ', ' + str(user.age) + '\n\n' + about )
sql = "INSERT INTO users (name, city, age, sex, about, user_id) VALUES (%s, %s, %s, %s, %s, %s)"
val = (user.name, user.city, user.age, user.sex, user.about, user_id)
mycursor.execute(sql, val)
#ПОДТВЕРЖДЕНИЕ ЗАНЕСЕНИЯ
mydb.commit()
print(mycursor.rowcount, 'запись добавлена')
markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
markup.add('Начать поиск', 'Заполнить анкету заново')
msg = bot.send_message(message.chat.id, "Что ты хочешь сделать?", reply_markup=markup)
bot.register_next_step_handler(msg, process_choice_step)
except Exception as e:
pass
Дальше шаг выбора. Не пойму как реализовать чтобы нажимая на кнопку "Заполнить анкету заново" бот начинал создание анкеты заново и введенные данные юзером ранее удалились или изменились на те, которые он введет пройдя заново. Это не работает
def process_choice_step(message):
try:
user_id = message.from_user.id
user = user_dict[user_id]
reset_profile = message.text
if reset_profile == 'Заполнить анкету заново':
sql = "DELETE users WHERE name = %s AND city = %s AND age = %s AND age = %s AND sex = %s AND about = %s AND user_id = %s"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, "record(s) deleted")
msg = bot.send_message(message.chat.id, "Хорошо\nЗаполним анкету заново")
bot.register_next_step_handler(msg, process_name_step)
else:
bot.send_message(message.chat.id, 'не понимаю')
except Exception as e:
pass
def process_name_step - это первый этап регистрации
Ответы (1 шт):
Автор решения: EVG
→ Ссылка
При выполнении запроса удаления вы не передаете сами данные для SQL запроса.
Примерный вид корректного запроса на удаление данных из базы данных:
sql = "DELETE FROM users WHERE user_id = %s"
val = (user_id)
mycursor.execute(sql, val)