Не записывает данные в БД SQL
Только осваиваю Python и сегодня впервые столкнулся с БД, так как решил создать свой мини проект, лучшее обучение это практика. Суть создать бота, где юзер создает себе анкету, данные сохраняются в БД, затем пользователь листает анкеты других людей. Когда лайкнул, то другому человеку приходит уведомление об этом, он видит твою анкету, ставит взаимный лайк и обоим юзерам дается возможность написать в личку в telegram сообщение(ссылка на id выдается) Не судите код строго, так как интуитивно пишу, опираясь на гугл)
- Через что примерно можно реализовать листание анкет ?
- Почему у меня не записывается юзер в БД после регистрации ? Ошибку не выдает(
import telebot
from telebot import types
import random
import mysql.connector
bot = telebot.TeleBot("token")
mydb = mysql.connector.connect(
host="localhost",
user="blablbabla",
password="sblalbalba",
port="balbalb",
database="profiles"
)
print(mydb)
mycursor = mydb.cursor()
user_dict = {}
class User:
def __init__(self, name):
self.name = name
self.city = ''
self.age = ''
self.sex = ''
self.about = ''
@bot.message_handler(commands=['start'])
def start(message):
msg = bot.send_message(message.chat.id, "Привет, {0.first_name}! \n\nЯ - <b>{1.first_name}</b> бот\nПомогу тебе найти пару :)\n\n<b>Как твоё имя?</b>".format(message.from_user, bot.get_me()),
parse_mode="html")
bot.register_next_step_handler(msg, process_name_step)
def process_name_step(message):
try:
user_id = message.from_user.id
user_dict[user_id] = User(message.text)
msg = bot.send_message(message.chat.id, 'Из какого ты города?')
bot.register_next_step_handler(msg, process_city_step)
except Exception as e:
bot.reply_to(message, 'Упс')
def process_city_step(message):
try:
user_id = message.from_user.id
city = message.text
user = user_dict[user_id]
user.city = city
msg = bot.send_message(message.chat.id, 'Сколько тебе лет?')
bot.register_next_step_handler(msg, process_age_step)
except Exception as e:
bot.reply_to(message, 'Упс')
def process_age_step(message):
try:
user_id = message.from_user.id
age = message.text
if not age.isdigit():
msg = bot.reply_to(message, 'Возраст состоит из цифр, введи еще раз')
bot.register_next_step_handler(msg, process_age_step)
return
user = user_dict[user_id]
user.age = age
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_sex_step)
except Exception as e:
bot.reply_to(message, 'oooops')
def process_sex_step(message):
try:
user_id = message.from_user.id
sex = message.text
user = user_dict[user_id]
if (sex == u'Парень') or (sex == u'Девушка'):
user.sex = sex
else:
msg = bot.reply_to(message, 'Выбери свой пол еще раз')
bot.register_next_step_handler(msg, process_sex_step)
return
msg = bot.send_message(message.chat.id, "расскажи о себе")
bot.register_next_step_handler(msg, process_about_step)
except Exception as e:
bot.reply_to(message, 'oooops')
# ЗАВЕРШЕНИЕ АНКЕТЫ + ЗАНЕСЕНИЕ ДАННЫХ В БД
def process_about_step(message):
try:
user_id = message.from_user.id
about = message.text
user = user_dict[user_id]
user.about = 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)
bot.send_message(message.chat.id, 'Нужная информация собрана\n\nВот твоя анкета:\n\n' +'Город ' + user.city + '\n' + user.name + '\nВозраст ' + str(user.age) + '\n\n' + about )
except Exception as e:
bot.reply_to(message, 'oooops')
if __name__ == '__main__':
bot.polling(none_stop=True)