Tkinter, MySQl, не удаляется информация
Я сделал авто-генерацию формы (для редактирования таблицы), которая принимает только один параметр - название таблицы. Но иногда, элемент не удаляется.
Вот код:
class TestSettings(tkinter.Toplevel):
def __init__(self, table):
super().__init__()
self.resizable(False, False)
self.geometry("500x300")
self.title("Окно управления данными")
self.table = table
self.dataBase = AdminSQL.SQLConnector.AdminSQLTest()
self.dataList = tkinter.Listbox(self)
self.createBtn = tkinter.Button(self, text="Создать", command=self.create_some)
self.changeBtn = tkinter.Button(self, text="Изменить", command=self.update_some)
self.deleteBtn = tkinter.Button(self, text="Удалить", command=self.delete_some)
self.columns = []
self.labels = []
self.entries = []
self.ids = []
self.dataList.pack(side="left")
self.createBtn.pack(side="right")
self.changeBtn.pack(side="right")
self.deleteBtn.pack(side="right")
self.get_elements()
self.fulling_elements()
self.get_values()
def get_elements(self):
for element in self.dataBase.get_describe(self.table):
if element[0] != "id":
self.columns.append(element[0])
self.labels.append(tkinter.Label(self, text=element[0]))
self.entries.append(tkinter.Entry(self))
self.labels[-1].pack(side="top")
self.entries[-1].pack(side="top")
def fulling_elements(self):
self.dataList.delete(0, tkinter.END)
for element in self.dataBase.get_something(self.table):
self.ids.append(element[0])
info = []
for i in range(1, len(element)):
info.append(element[i])
self.dataList.insert(tkinter.END, info)
def create_some(self):
self.dataBase.create_something(self.table, self.get_columns()[:-1], self.get_values()[:-1])
self.fulling_elements()
def delete_some(self):
print(self.ids[self.dataList.curselection()[0]])
self.dataBase.delete_something(self.table, self.ids[self.dataList.curselection()[0]])
self.fulling_elements()
def update_some(self):
self.dataBase.update_something(self.table, self.get_columns_for_update()[:-1], self.get_values_for_update(), self.ids[self.dataList.curselection()[0]])
self.fulling_elements()
def get_columns_for_update(self):
to_ret = ""
for column in self.columns:
to_ret += column + "=%s,"
return to_ret
def get_columns(self):
to_ret = ""
for column in self.columns:
to_ret += column + ","
return to_ret
def get_values(self):
to_ret = ""
for value in self.entries:
to_ret += f"'{value.get()}',"
return to_ret
def get_values_for_update(self):
to_ret = []
for value in self.entries:
to_ret.append(value.get())
return to_ret
Я пытался понять в чем дело и начал выводить id, которые необходимо удалить, однако оно выводит уже удаленные id.
Вот в консоле вывод уже удаленных элементов, как видите, они повторяются

