#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 , но это показало мне конн