#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-инъекции, хотя в этом случае идентификатор автора может быть только целым числом.