Как удалить из Mysql базы данных элемент, выбранный в списке Python Tkinter - PullRequest
0 голосов
/ 08 июля 2020

Я создал базу данных с 3 столбцами (идентификатор, имя, цена), и поскольку я не могу отобразить все столбцы в списке, я отображаю только столбец «имя», поэтому я хочу иметь возможность удалить элемент в базе данных на основе имени продукта, который я нажимаю в списке. вот код, надеюсь, он поможет:

import tkinter 
from tkinter import *
import mysql.connector
root = Tk()

root.geometry('700x500')

con = mysql.connector.connect(user = '', password = '', host = '127.0.0.1', database = 'anime')

concursor = con.cursor()

concursor.execute('select * from prod')
query = concursor.fetchall()

l = Listbox(root)

for x,y,z in query:
    l.insert(x+1, y)


l.pack(anchor='w')

#function to delete prod

def delp():

    sel_items = l.curselection()
    for item in sel_items:
        concursor.execute("delete from prod where name = ('{}')".format(item))
    con.commit()

button1 = Button(root, text = 'prod del', command = delp)
button1.pack(anchor='w')

root.mainloop()

, а это изображение базы данных: введите описание изображения здесь

код python работает, только если я заменяю «name» на «id» в запросе в функции «delp», однако, когда я выбираю 1-й элемент в списке, он удаляет 2-й элемент в базе данных, и я хочу иметь возможность удалять по имени.

1 Ответ

0 голосов
/ 10 июля 2020

так что я понял это, вот ответ для тех, кто / будет искать это. it ", а затем использовать его в запросе с форматом. Вот код, который имеет смысл

    def delp():
        sel_items = l.get(ACTIVE)
        string_item = str(sel_items)
        for item in sel_items:
            concursor.execute("delete from prod where name = ('{}')".format(string_item))
        con.commit()

этот код удалит элементы в базе данных на основе имени, выбранного в списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...