#python #tkinter
#python #tkinter
Вопрос:
Что я сделал:
Я создал элемент таблицы (в python с подключением к mysql для хранения указанной таблицы в базе данных mysql), который содержит 3 столбца (ICODE, INAME, ITYPE). Затем я создал окно графического интерфейса tkinter с 3 текстовыми полями, которое позволяет пользователям вводить входные данные ICODE, INAME, ITYPE. У него есть две кнопки: Добавить элемент и удалить элемент.
Что я пытаюсь сделать:
Я написал следующий код, который будет принимать ICODE и удалять запись с введенным ICODE
Код:
def delitem():
icode=tcode.get("1.0","end-1c")
#Database Connection
if icode=="":
tk.messagebox.showinfo("Please enter a code")
else:
import mysql.connector as sqltor
connection=sqltor.connect(host="localhost",user="root",passwd="
",database="apparelstore")
tkcursor=connection.cursor(prepared=True)
sql="delete from item where icode=%s"
val="icode"
tkcursor.execute(sql,val)
connection.commit()
tk.messagebox.showinfo("Item deleted")
tkcursor.close()
Ошибка:
Неправильное количество аргументов, выполняющих подготовленный оператор
Комментарии:
1. Ожидается,
tkcursor.execute(sql, (val,))
что второй аргумент будет кортежем или списком.2. Вы имели
val
в виду строку или присваиваете ей переменную? Кроме того, если вы не передадите кортеж в качестве второго аргумента, потребуется дополнительноlen('icode')
(т.Е. 5) Больше аргументов и, следовательно, ошибка, которую вы получили.3. Я думаю, что это должно быть
tkcursor.execute(sql, (icode,))
вместо тогоicode
, чтобы содержать введенное вами значение.4. @acw1668 Я попробовал, и теперь это сработало. Спасибо
Ответ №1:
Оператор tkcursor.execute(sql, val)
должен быть:
tkcursor.execute(sql,(val,))
Комментарии:
1. Я попробовал это, и это все еще не работает, ошибок тоже нет
2. Вместо
tkcursor.close()
этого вы должны закрыть соединение, т. Е. Оно должно бытьconnection.close()
. Я не знаю, поможет ли это, но просто попробуйте и посмотрите.3. Как заявил @acw1668, проблема заключалась в
tkcursor.execute(sql,val)
том, что должно было бытьtkcursor.execute(sql,(icode,))
. Но то, что вы указали, также является ошибкой, я должен был закрыть соединение, а не курсор