Этот вопрос закрыт для ответов, так как повторяет вопрос Не удаляет данные из бд?
whysocute
@whysocute
Just a boy from Belarus ????????

Delete from table_name where name = %s; возвращает 0?

Вы меня простите, но задам такой вопрос еще раз)
Суть: В телеграмме если запускать эту функцию у бота показывает ,что "имя" удалено, в логах ошибок не выдает и т.д
Если писать запрос напрямую в pgadmin то выдает 0 при условии name = %s , если же писать напрямую имя которое я добавлял то строчка успешно удаляется. Но я не понимаю почему не удаляет с bind переменной %s так как в нее попадает имя из (data). Когда я выбираю в боте какое "событие" удалить срабатывает хендлер dp.callbeck_query_handler и прикол в том , что он срабатывает и даже вылазит show_alert Имя-удалена , но из бд не удаляется.
Надеюсь вы поняли логику, не знаю в чем может быть причина , думал может что то с правами , пока не попробовал через pgadmin

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


async def sql_delete_command(data):
        cur.execute('DELETE FROM cfc WHERE name= %s', (data, ))
        base.commit()


Ps
Коммиты стоят, даже автокомит пробовал - не помогает)

Спасибо !
  • Вопрос задан
  • 117 просмотров
Ответы на вопрос 1
@PavelMos
0 значит 0 строк было удалено.
Самофикс. Проверь не путаются ли два способа использовать плейсхолдеры для sql, со знаками вопроса и со знаком процента (на самом деле знак процента это не конкретно для SQL, это для строк в питоне вообще). Если со знаком процента, то также нужны кавычки. name="%s"
https://docs.python.org/3/library/sqlite3.html
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы