当变量'row\'id'为0,1,2,3等时,我想从数据库表中删除整行。。。。例如:当row_id为1时,我的脚本应该删除值为“1”“2017-11-06”“D”“D”“Good”的行,当为2时删除值为“2”“2017-11-06”“SS”“SS”“Sent to repair”的行
我的数据库表“cards”如下所示:ID, date, card, serial_card, statuscard
"1" "2017-11-06" "D" "D" "Good"
"2" "2017-11-06" "SS" "SS" "Sent to repair"
我试过了:
^{pr2}$
我的全部源代码:from tkinter import *
import sqlite3
import time
import datetime
conn = sqlite3.connect('cards.db')
c = conn.cursor()
class MainWindow():
def __init__(self,master):
self.master=master
self.master.geometry("220x120")
self.master.title('Cards!')
self.button2=Button(self.master,text="Status ASRU Cards",fg='blue',command=self.gotoasru)
self.button2.place(x=50, y=20)
self.button4=Button(self.master,text="Exit",fg='red',command=self.exit)
self.button4.place(x=90, y=60)
def exit(self):
self.master.destroy()
def gotoasru(self):
root2=Toplevel(self.master)
myGUI2=status_asru(root2)
class status_asru():
def __init__(self,master):
self.master=master
self.master.geometry("760x310")
self.master.title('ASRU cards')
self.connection = sqlite3.connect('cards.db')
self.cur = self.connection.cursor()
self.insert()
self.button5=Button(self.master,text="Exit",fg='red',command= self.exit)
self.button5.place(x=340,y=270)
def exit(self):
self.master.destroy()
def insert(self):
self.cur.execute('CREATE TABLE IF NOT EXISTS cards(ID INT AUTO_INCREMENT, date TEXT,card TEXT,serial_card TEXT,statuscard TEXT)')
global insert_data
global exit1
global lb
global readfromdatabase
tipcard=StringVar()
serial_card=StringVar()
statuscard=StringVar()
label1=Label(self.master,text='Insert card type:',fg='black')
label1.place(x=5,y=120)
label2=Label(self.master,text='Insert card SN:',fg='black')
label2.place(x=5,y=140)
label3=Label(self.master,text='Insert card status:',fg='black')
label3.place(x=5,y=160)
label4=Label(self.master,text='Select a card to be deleted from the top list',fg='black')
label4.place(x=440,y=160)
a=Entry(self.master,textvariable=tipcard)
a.place(x=100,y=120)
b=Entry(self.master,textvariable=serial_card)
b.place(x=100,y=140)
var1 = IntVar()
CB1=Checkbutton(self.master, text="Good", variable=var1)
CB1.place(x=100,y=160)
var2 = IntVar()
CB2=Checkbutton(self.master, text="Defect", variable=var2)
CB2.place(x=160,y=160)
var3 = IntVar()
CB3=Checkbutton(self.master, text="Sent to repair", variable=var3)
CB3.place(x=230,y=160)
def insert_data():
timestamp = str(datetime.datetime.now().date())
card=tipcard.get()
SN=serial_card.get()
if var1.get() == 1 and var2.get() == 0 and var3.get() == 0:
status='Good'
c.execute("INSERT INTO cards (date, card, serial_card, statuscard) VALUES (?, ?, ?, ?)",(timestamp, card, SN, status))
conn.commit()
elif var1.get() ==0 and var2.get() == 1 and var3.get() == 0:
status='Defect'
c.execute("INSERT INTO cards (date, card, serial_card, statuscard) VALUES (?, ?, ?, ?)",(timestamp, card, SN, status))
conn.commit()
elif var1.get() ==0 and var2.get() == 0 and var3.get() == 1:
status='Sent to repair'
c.execute("INSERT INTO cards (date, card, serial_card, statuscard) VALUES (?, ?, ?, ?)",(timestamp, card, SN, status))
conn.commit()
elif var1.get() == 1 and var2.get() == 1 and var3.get() == 1:
label5=Label(self.master,text='select only 1 status',fg='red')
label5.place(x=105,y=180)
var1.set(0)
var2.set(0)
var3.set(0)
elif var1.get() == 0 and var2.get() == 0 and var3.get() == 0:
label6=Label(self.master,text='select 1 status',fg='red')
label6.place(x=105,y=180)
var1.set(0)
var2.set(0)
var3.set(0)
elif var1.get() == 1 and var2.get() == 1 and var3.get() == 0:
label7=Label(self.master,text='select only 1 status',fg='red')
label7.place(x=105,y=180)
var1.set(0)
var2.set(0)
var3.set(0)
elif var1.get() == 0 and var2.get() == 1 and var3.get() == 1:
label8=Label(self.master,text='select only 1 status',fg='red')
label8.place(x=105,y=180)
var1.set(0)
var2.set(0)
var3.set(0)
elif var1.get() == 1 and var2.get() == 0 and var3.get() == 1:
label9=Label(self.master,text='select only 1 status',fg='red')
label9.place(x=105,y=180)
var1.set(0)
var2.set(0)
var3.set(0)
lb = Listbox(self.master, width=120, height=6)
scrollbar = Scrollbar(self.master, orient="vertical",command=lb.yview)
scrollbar.pack(side="right", fill="y")
lb.place(x=5,y=5)
def readfromdatabase():
self.cur.execute("SELECT * FROM cards")
return self.cur.fetchall()
data = readfromdatabase()
for index, dat in enumerate(data):
lb.insert("end",'Card Type: '+dat[2]+3*' '+'SN: '+dat[3]+3*' '+'Status: '+dat[4]+3*' '+'Last modification date: '+dat[1] )
self.delete=Button(self.master,text="Delete Card",fg='blue',command = lambda: delete(lb))
self.delete.place(x=520, y=190)
def delete(self):
# Delete from Listbox
selection = lb.curselection()
lb.delete(selection[0])
row_id=selection[0]
print(row_id)
c.execute("DELETE FROM cards WHERE ID = {}".format(row_id))
conn.commit()
self.button4=Button(self.master,text="Insert new card",fg='green',command=insert_data)
self.button4.place(x=100,y=200)
def main():
root=Tk()
GUI=MainWindow(root)
root.mainloop()
if __name__ == '__main__':
main()