Uparłem się jednak przy moim rozwiązaniu i zmodyfikowałem funkcję dodawania danych oraz funkcję zapisującą dane do pliku. Projekt był projektem zaliczeniowym i miałem narzucone odgórnie, że ID ma być nadawane przez użytkownika programu, jak na pierwszą styczność z MySQL myślę, że wyszło całkiem nieźle :) Dla ciekawskich poniżej zamieszczam zmodyfikowane funkcje opisane powyżej:
def getrow(event):
trv.identify_row(event.y)
item = trv.item(trv.focus())
t1.set(item['values'][0])
t2.set(item['values'][1])
t3.set(item['values'][2])
t4.set(item['values'][3])
t5.set(item['values'][4])
t6.set(item['values'][5])
t7.set(item['values'][6])
t8.set(item['values'][7])
t9.set(item['values'][8])
t10.set(item['values'][9])
t11.set(item['values'][10])
def dodaj():
id = t1.get()
imie = t2.get()
nazwisko = t3.get()
wiek = t4.get()
kod = t5.get()
miasto = t6.get()
ulica = t7.get()
nr_m = t8.get()
marka = t9.get()
model = t10.get()
nr_rej = t11.get()
check=0
for i in dane:
if i[0]==int(id):
check=1
if check==1:
messagebox.showerror("Zduplikowano", "Pracowinik o podanym id już istnieje!")
return False
else:
query = "INSERT INTO baza(ID, Imie, Nazwisko, Wiek, Kod_pocztowy, Miasto, Ulica, Nr_mieszkania, Marka, " \
"Model, Nr_rejestracji) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
cursor.execute(query, (id, imie, nazwisko, wiek, kod, miasto, ulica, nr_m, marka, model, nr_rej))
mydb.commit()
anuluj()
return False
def savedb():
if messagebox.askyesno("Potwierdź.", "Czy na pewno chcesz zapisać dane do bazy?"):
numery = pd.read_sql('SELECT ID FROM baza', con=mydb)
df = pd.DataFrame(numery)
nump = df["ID"].to_numpy()
x = nump.tolist()
update(dane)
l_pow=0
for i in x:
for j in dane:
if i==int(j[0]):
dane.remove(j)
l_pow+=1
l_uni=len(dane)
if len(dane)==0:
messagebox.showerror("Brak danych.", "Brak nowych indeksów do dodania!")
return False
else:
for i in dane:
id = i[0]
imie = i[1]
nazwisko = i[2]
wiek = i[3]
kod = i[4]
miasto = i[5]
ulica = i[6]
nr_m = i[7]
marka = i[8]
model = i[9]
nr_rej = i[10]
query = "INSERT INTO baza(ID, Imie, Nazwisko, Wiek, Kod_pocztowy, Miasto, Ulica, Nr_mieszkania, " \
"Marka, Model, Nr_rejestracji) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
cursor.execute(query, (id, imie, nazwisko, wiek, kod, miasto, ulica, nr_m, marka, model, nr_rej))
mydb.commit()
anuluj()
messagebox.showinfo("Dane zapisano.", "Dane zostały pomyślnie zapisane do bazy.\nIlość rekordów które nie zostały zapisane: "+str(l_pow)+"\nIlość dodanych rekordów: "+str(l_uni))
else:
return False