Не загружаются переменные в таблицу MySQL Python
Пишу телеграм бота, всё вроде хорошо, но не добавляются значения переменных в таблицу. Python 3.8. Заранее спасибо!
import telebot
from telebot import *
import pymysql
from db_config import host, user, db_password, db_name
#db
try:
conn = pymysql.connect(
host=host,
port=xxxx,
user=user,
password=db_password,
database=db_name,
cursorclass=pymysql.cursors.DictCursor
)
print("Successfully connected...")
print("="*25)
try:
with conn.cursor() as cursor:
pass
#create_table_query = "CREATE TABLE (id int AUTO_INCREMENT,login varchar(30), password varchar(30), adminlevel varchar(30),PRIMARY KEY(id))"
#drop_table = "DROP TABLE `users`"
#cursor.execute(create_table_query)
#print("Table created...")
finally:
pass
#conn.close()
except Exception as ex:
print("Connection refused...")
print(ex)
#bot
user_dict = {}
adminlevel = 2
class User:
def __init__(self, login):
self.login = login
self.password = None
self.adminlevel = None
keys = ['login', 'password']
for key in keys:
self.key = None
TOKEN = "xxx"
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands = ["start"])
def welcome(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
log = types.KeyboardButton("Войти в аккаунт")
register = types.KeyboardButton("Создать новый аккаунт")
markup.add(log, register)
bot.send_message(message.chat.id, "Добро пожаловать {0.first_name}! Я бот-администратор для твоей группы/бесседы!\nДля моей работы ты должен зарегестрировать новый или войти в существующий аккаунт.".format(message.from_user,bot.get_me()), parse_mode="HTML", reply_markup=markup)
@bot.message_handler(content_types=["text"])
def answer(message):
if message.chat.type == "private":
if message.text == "Создать новый аккаунт":
make_login_step(message)
def make_login_step(message):
try:
chat_id = message.chat.id
login = message.text
user = User(login)
user_dict[chat_id] = user
msg = bot.send_message(chat_id, "Отлично! Для начала введи логин.")
bot.register_next_step_handler(msg, make_password_step)
finally:
pass
def make_password_step(message):
try:
chat_id = message.chat.id
password = message.text
user = User(password)
user_dict[chat_id] = user
msg = bot.send_message(chat_id, "Теперь пароль")
bot.register_next_step_handler(msg, finish_reg_step)
finally:
pass
def finish_reg_step(message):
adminlevel = 1
bot.send_message(message.chat.id, str("Регистрация завершена"))
msg = bot.send_message(message.chat.id, "Теперь ты можешь войти в свой аккаунт через /alogin")
with conn.cursor() as cursor:
insert_data = "INSERT INTO `users`(login, password, adminlevel) VALUES (login, password, adminlevel)"
cursor.execute(insert_data)
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: jediAllen
→ Ссылка
Вот, нашёл пример вашей ошибки. При добавлении вы просто пишете названия переменных. Надо выполнять функцию execute, вместо переменных написав знак вопроса. Вот этот запрос который вы передали в execute это первый аргумент, вторым передайте в скобках переменные которые как бы подставятся под знаки вопроса. Все