Как удалить конкретную строку из базы данных Sqlite3

Пишу бота, в нем присутствует регистрация. Пользователь вписывает свои фио, далее отправляет контакт, откуда считывается номер и ID:

@dp.message_handler(Text(equals="Регистрация"), state=None)
async def cm_start(message : types.Message):
await FSMadmin.fio.set()
await bot.send_message(message.from_user.id, 'Напишите Ваше полные имя, фамилию и отчество(если есть) через пробел', reply_markup=ReplyKeyboardRemove())

@dp.message_handler(state=FSMadmin.fio)
async def cm_fio(message : types.Message, state=FSMContext):
async with state.proxy() as data:
    data['fio'] = message.text
await FSMadmin.read_number.set()
await bot.send_message(message.from_user.id, 'Теперь добавим Ваш номер в базу данных. Для этого нажмите кнопку на клавиатуре', reply_markup=client_kb.kb_read_numder)

@dp.message_handler(content_types=types.ContentType.CONTACT,state=FSMadmin.read_number)
async def cm_number(message : types.Message, state=FSMContext):
async with state.proxy() as data:
    data['read_number'] =  message.contact['phone_number']
    data['id'] = message.contact['user_id']
await sql_db.sql_add_command(state)
await state.finish()
await bot.send_message(message.from_user.id, 'Регистрация в базе данных завершена, ожидайте ответа от HR-службы по Вашей кандидатуре', reply_markup=ReplyKeyboardRemove())

Админ эти данные может просматривать:

@dp.message_handler(Text(equals="Сотрудники"))
async def command_sotrudniki(message : types.Message):
if message.from_user.id == ADMIN_ID:
    await bot.send_message(message.from_user.id,'Список зарегистрировавшихся сотрудников: ', reply_markup=admin_kb.kb_two)
    await sql_db.sql_read(message)
elif message.from_user.id == ADMIN_THREE_ID:
    await bot.send_message(message.from_user.id,'Список зарегистрировавшихся сотрудников: ', reply_markup=admin_kb.kb_two)
    await sql_db.sql_read(message)
else:
    await message.answer('Нет такой команды, воспользуйтесь клавиатурой')

Код самой базы данных:

def sql_start():
global base, cur
base = sq.connect('sotrudniki.db')
cur = base.cursor()
if base:
    print('Data base connected OK!')
    base.execute('CREATE TABLE IF NOT EXISTS sotrudniki(fio, number, id)')
    base.commit()

async def sql_add_command(state):
async with state.proxy() as data:
    cur.execute('INSERT INTO sotrudniki VALUES (?, ?, ?)', tuple(data.values()))
    base.commit()

async def sql_read(message):
for ret in cur.execute('SELECT * FROM sotrudniki').fetchall():
    await bot.send_message(message.from_user.id, f'{ret[0]}\nНомер пользователя: {ret[1]}\nID пользователя: {ret[2]}', reply_markup=admin_kb.inl_kb_delete)

async def sql_delete(data):
cur.execute('DELETE FROM sotrudniki WHERE id == ?', (data, ))
base.commit

Как это выгледит: Описание

Если записей много, кнопка "Удалить запись" будет под каждой записью. Как ее заставить работать? Чтобы при нажатии на кнопку удалялась именно та запись, под которой была нажата кнопка?


Ответы (0 шт):