удаление данных sqllite3 из таблицы в python

#python-3.x #sqlite #tkinter #tkinter-entry

#python-3.x #sqlite #tkinter #tkinter-запись

Вопрос:

я пытаюсь удалить определенную запись, в которой должны совпадать имя пользователя и имя книги, и эта запись должна быть удалена из базы данных. код работает, но данные внутри базы данных не удаляются. я беру имя книги и имя пользователя из поля ввода в tkinter. затем найдите эту запись и удалите ее из базы данных. я попытался просмотреть множество документов и diff-кода. я перепробовал много разных методов, но ни один из них не сработал для меня

 con=sqlite3.Connection("Booking")
cur=con.cursor()
cur.execute("create table if not exists Booking(username varchar(20),address varchar(56),mob number(10),qty number(2),Book varchar(50))")
def sdw():
            te = Tk()
            te.geometry("250x300")
            L1 = Label(text="User Name").grid(row=1, column=0)
            E1 = Entry(te)
            E1.grid(row=1, column=2)
            L5 = Label(text="book name").grid(row=5, column=0)
            E5 = Entry(te)
            E5.grid(row=5, column=2)
            def db():
                print("gh")
        
                if os.path.isfile(E1.get()):
                    
                    st="DELETE  from Booking where username='%s' and Book='%s'"%(E1.get(),E5.get())
                    cur.execute("select * from Booking where username=?", (E1.get(),))
                    a = cur.fetchall()
                    messagebox.showinfo('Find', a)
                    cur.execute(st)
                    
                    messagebox.showinfo('Find', "all booking deleted")
                    te.destroy()
                    os.system("library.py")
        
                else:
                    messagebox.showinfo("ERROR","username invalid")
            b161 = Button(text="search booking", command=db)
            b161.place(x=100, y=100)
            te.mainloop()
  

Комментарии:

1. Не похоже, что вы вносите какие-либо изменения в базу данных. Вы знаете, что вам нужно это сделать? Похоже, вы также выбираете элемент перед его удалением.

2. Delete — это оператор DML, означает, что он требует, чтобы вы зафиксировали изменение, поэтому вы должны сказать. con.commit() чтобы сохранить изменения.

3. @CoolCloud я попробовал этот con.comit(), он вообще не работал. я читал это в документе об этом, но запуск кода idk y не внес никаких изменений в db

4. Вы должны сказать commit() после выполнения delete инструкции

5. @CoolCloud спасибо, приятель, за твою помощь. я неправильно использовал conn вместо con, как я прочитал здесь sqlitetutorial.net/sqlite-python/delete , idk y , но это показало мне конн