Python 程序中 DELETE 和 EDIT 无法正常工作

73 阅读2分钟

在该 Python 程序中,用户希望添加、删除、编辑和查看学生记录。但是,DELETE 和 EDIT 无法正常工作。当用户尝试删除一条记录时,会收到错误消息,提示只有 8 列而需要 10 列。

2、解决方案

为了解决这个问题,需要修改 DELETE 和 EDIT 函数中的 SQL 语句。在 DELETE 函数中,删除语句应该使用 WHERE 子句来指定要删除的记录的条件,而不是只使用 DELETE FROM student。在 EDIT 函数中,插入语句应该使用 REPLACE INTO 而不是 INSERT INTO,这样才能替换现有记录而不是添加新记录。

以下是在 Python 程序中实现 DELETE 和 EDIT 功能的代码示例:

def deleteRecord():
    studentnum1 = ""
    win = tkinter.Tk();win.title("Delete Student Record")
    lbl = tkinter.Label(win,background="#000",foreground="#ddd",width=30,text="Delete Record")
    lbl.pack()
    lbl10 = tkinter.Label(win,text="Student Number")
    lbl10.pack()
    en10 = tkinter.Entry(win)
    en10.pack()

    def delete():
        studentnum1 = en10.get()
        con = sqlite3.connect("Students.db")
        cur = con.cursor()
        row = cur.fetchone()
        cur.execute("DELETE FROM student WHERE studentnum = '%s';" % studentnum1)
        con.commit()
        win = tkinter.Tk();win.title("Record Deleted")
        lbl = tkinter.Label(win,background="#000",foreground="#ddd",width=30,text="Record Deleted :")
        lbl.pack()
        lbl = tkinter.Label(win,width=30,text=studentnum1)
        lbl.pack()
        btn = tkinter.Button(win,background="#000",foreground="#ddd",width=30,text="Ok",command=win.destroy)
        btn.pack()

    btn2 = tkinter.Button(win,background="#000",foreground="#ddd",width=30,text="Delete",command=delete)
    btn2.pack()

def editRecord():
    studentnum1 = ""

    def edit():
        studentnum1 = en10.get()

        studentnum = ""
        name = ""
        age = ""
        birthday = ""
        address = ""
        email = ""
        course = ""
        year = ""
        section = ""

        con = sqlite3.connect("Students.db")
        cur = con.cursor()
        row = cur.fetchone()
        cur.execute("REPLACE INTO student(studentnum,name,age,email,birthday,address,email,course,year,section) VALUES(?,?,?,?,?,?,?,?,?,?)",student)
        con.commit()

        win = tkinter.Tk();win.title("Students")
        lbl = tkinter.Label(win,background="#000",foreground="#ddd",width=30,text="Edit Record :"+'\t'+studentnum1)
        lbl.pack()
        lbl1 = tkinter.Label(win,width=30,text="Student Number : ")
        lbl1.pack()
        en1 = tkinter.Entry(win,width=30)
        en1.pack()
        lbl2 = tkinter.Label(win,width=30,text="Name : ")
        lbl2.pack()
        en2 = tkinter.Entry(win,width=30)
        en2.pack()
        lbl3 = tkinter.Label(win,width=30,text="Age : ")
        lbl3.pack()
        en3 = tkinter.Entry(win,width=30)
        en3.pack()
        lbl4 = tkinter.Label(win,width=30,text="Birthday : ")
        lbl4.pack()
        en4 = tkinter.Entry(win,width=30)
        en4.pack()
        lbl5 = tkinter.Label(win,width=30,text="Address : ")
        lbl5.pack()
        en5 = tkinter.Entry(win,width=30)
        en5.pack()
        lbl6 = tkinter.Label(win,width=30,text="Email : ")
        lbl6.pack()
        en6 = tkinter.Entry(win,width=30)
        en6.pack()
        lbl7 = tkinter.Label(win,width=30,text="Course : ")
        lbl7.pack()
        en7 = tkinter.Entry(win,width=30)
        en7.pack()
        lbl8 = tkinter.Label(win,width=30,text="Year : ")
        lbl8.pack()
        en8 = tkinter.Entry(win,width=30)
        en8.pack()
        lbl9 = tkinter.Label(win,width=30,text="Section : ")
        lbl9.pack()
        en9 = tkinter.Entry(win,width=30)
        en9.pack()

        btn1 = tkinter.Button(win,background="#000",foreground="#ddd",width=30,text="Save Record",command=save)
        btn1.pack()

    win = tkinter.Tk();win.title("Edit Student")
    lbl = tkinter.Label(win,background="#000",foreground="#ddd",width=30,text="Edit Record")
    lbl.pack()
    lbl10 = tkinter.Label(win,width=30,text="Student Number : ")
    lbl10.pack()
    en10 = tkinter.Entry(win)
    en10.pack()
    btn2 = tkinter.Button(win,background="#000",foreground="#ddd",width=30,text="Edit",command=edit)
    btn2.pack()

这样就可以修复程序中 DELETE 和 EDIT 无法正常工作的问题了。