[Tutor] Looking for help in sqlite3 UPDATE and DELETE selection in treeview (ttk tkinter)

Piotr Mazek pmazek at otwock.pl
Wed May 12 08:46:20 EDT 2021


Welcome Tutor,

 

I am just a hobbyist, but with need to know more especially in programming
in Python.

I'm writing application to manage sqlite3 database in window made in tkinter
with treeview.

Successfully wrote two functions: to show database, and to add new row.

But stuck on Update and delete selection. I think there are some stupid
mistakes, but can't see them.

 

Here is part of my code:

 

    def updateRecord():

 

        def updateR():

            conn = sqlite3.connect('db_member.db')

            c = conn.cursor()

 

            # INSERT into table

# I wish to get values from selection and place them in corresponding Entry
fields, then change some value and save new state

            c.execute("UPDATE `member` SET (:mem_id, :firstname, :lastname,
:address)"))

            conn.commit()

            conn.close()

            updateRoot.destroy()

 

        updateRoot = Toplevel()

            

        updateRoot.title("Update record")

        updateRoot.iconbitmap('printer.ico')

        

        lbl_fname = Label(updateRoot, text="First Name")

        lbl_fname.grid(row=0, column=0, pady=10)

        lbl_lname = Label(updateRoot, text="Last Name")

        lbl_lname.grid(row=1, column=0, pady=10)

        lbl_addr = Label(updateRoot, text="Address")

        lbl_addr.grid(row=2, column=0, pady=10)

 

        en_fname = Entry(updateRoot)

        en_fname.grid(row=0, column=1, padx=10)

        en_lname = Entry(updateRoot)

        en_lname.grid(row=1, column=1, padx=10)

        en_addr = Entry(updateRoot)

        en_addr.grid(row=2, column=1, padx=10)

 

        btn = Button(updateRoot, text="Update", command=updateR)

        btn.grid(row=3, column=1, columnspan=2, sticky='we', padx=20)

 

        updateRoot.mainloop()

 

    def deleteRecord():

 

        conn = sqlite3.connect('db_member.db')

        c = conn.cursor()

 

        # DELETE from table

# two lines above deletes from treeview only but not from database file

        userid = tree.selection()[0]

        tree.delete(userid)

# here I have no idea how to delete selected row from database

        c.execute("DELETE FROM `member` WHERE mem_id = ?", (userid))

        

        conn.commit()

        conn.close()

 

 

 

Can you please tell me how to solve my problem?

 

Best regards,

Diego



More information about the Tutor mailing list