Обновление таблицы SQL с помощью discord.py

#python #mysql #sql #discord #discord.py

#питон #mysql #sql #Discord #discord.py

Вопрос:

итак, у меня есть таблица «time_estimations_4», в которой я хочу обновить значение в таблице «Mod_on» .

проблема: сохраняет столбец Mod_on 0 вместо обновления до 1

дополнительная информация: распечатка не дает никаких результатов

Вот создание таблицы:

 sql = '''CREATE TABLE IF NOT EXISTS time_estimation_4(  turn BIGINT primary key auto_increment,  Mod_on int DEFAULT 0,  mod_id BIGINT,  mods_online BIGINT  )'''  

Вот обновление:

 @pro.command() async def online(ctx):  sql_check_user = f'''SELECT mod_id FROM time_estimation_4 WHERE mod_id = {ctx.author.id}'''  cur.execute(sql_check_user)  out_user = cur.fetchone()  user = ctx.author.id  if out_user == None:  cur.execute('INSERT INTO time_estimation_4 (mod_id) VALUES (%s)', (user,))  db.commit()  sql1 = f'''SELECT Mod_on FROM time_estimation_4 WHERE mod_id = {ctx.author.id}'''  cur.execute(sql)  out = cur.fetchone()  print(out)  if out == 1:  await ctx.send("mod's already online")  elif out == 0:  sql2 = f'''UPDATE time_estimation_4 SET Mod_on = 1 WHERE mod_id = {ctx.author.id}'''  await ctx.send("Done! You won't be recieving notifications and time estimation will be longer!" )  

Кто-нибудь видит возможные проблемы?

Ответ №1:

Похоже, что вы никогда не выполняете свой запрос, предназначенный для обновления столбца Mod_on, вы создаете переменную sql2 с помощью запроса, но затем ничего с ней не делаете.

Вы также должны привыкнуть создавать параметризованные запросы вместо интерполяции идентификатора автора, так как это может сделать вас подверженным атаке SQL-инъекции, хотя в этом случае идентификатор автора может быть только целым числом.