@Winfl

Как подвязать в AIOGRAM на InlineKeyboardButton кнопку удаления столбца из SQLITE?

Всем привет, в ходе разработки меню администратора(через telegram чат) задумался над тем,что админ хоть и может заносить/добавлять какие-то данные,но было бы круто если-бы он мог их так-же удалять,а не лезть каждый раз SQLite и делать все вручную.Так вот, ниже приведу код, которым и пытался реализовать данную задачу
@dp.message_handler(text="Удалить из базы данных")
async def sql_del(message: types.Message):
    if message.from_user.id == Admin_Id:
        read = await sqlite_db.sql_read2()
        for ret in read:
            await bot.send_message(message.from_user.id, text=f'{ret[:]}', reply_markup=InlineKeyboardMarkup().
                                   add(InlineKeyboardButton(f'Удалить {ret[:]}', callback_data=f'del {ret[:]}')))


@dp.callback_query_handler(lambda x: x.data and x.data.startswith('del '))
async def del_callback_run(call: types.CallbackQuery):
    await sqlite_db.sql_delete(call.data.replace('del ', ''))
    await call.answer(text=f'{call.data.replace("del ", "")} удалено.', show_alert=True)

вот мои "кнопки" при нажатии которых я вроде как создаю динамическую инлайн клавиатуры,где есть возможность удалить данные,которые я вывел с ранжирования,однако,когда я вызываю ф-ию sql_delete ( ниже привожу ее)
async def sql_delete(data):
    cur.execute('DELETE FROM menu WHERE variable ==  ? ', (data,))
    base.commit()

ничего по итогу не удаляется... Как бы все "вроде-бы" прекрасно отрабатывает и создается(клавиатура и show_alert отрабатывает) и ошибок в консоли тоже нету,но не понимаю почему не получается удалить данные.
На просторах интернета находил такие варианты с удалениями:
'DELETE FROM menu WHERE variable=(?)'
и такой вариант
DELETE FROM menu
WHERE variable= 'data';

в общем не понимаю/вижу,что я не так сделал.Буду очень благодарен,если вы укажите на мою ошибку(и).
Заранее спасибо
  • Вопрос задан
  • 484 просмотра
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
По-моему, должно быть как-то так:
async def sql_delete(data):
    cur.execute('DELETE FROM menu WHERE variable = ?;', (data,))
    base.commit()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы