【发布时间】:2019-11-29 13:58:40
【问题描述】:
您好,我正在尝试从树视图和数据库中删除选定的项目,我处理了一些代码,但它一直失败
这里是代码
def delete():
selected_item = tree.selection()[0]
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="root",
database="loginsystem"
)
mycursor = mydb.cursor()
sql_select_Query = ("DELETE FROM data WHERE idData = '%s'")
mycursor.execute(sql_select_Query, selected_item)
mydb.commit()
tree.delete(selected_item)
print('delete')
def viewdata():
global screen7
global tree
screen7 = Toplevel(screen)
screen7.title("HOT or SUPER HOT(GUEST)")
screen7.geometry("800x450+550+220")
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="root",
database="loginsystem"
)
mycursor = mydb.cursor()
sql_select_Query = "select * from data"
mycursor.execute(sql_select_Query)
records = mycursor.fetchall()
height = 5
width = 2
tree = ttk.Treeview(screen7 ,style="mystyle.Treeview")
selected_items = tree.selection()
style = ttk.Style()
style.configure("mystyle.Treeview", highlightthickness=0, bd=0, font=('Calibri', 11)) # Modify the font of the body
style.configure("mystyle.Treeview.Heading", font=('Calibri', 13, 'bold')) # Modify the font of the headings
style.layout("mystyle.Treeview", [('mystyle.Treeview.treearea', {'sticky': 'nswe'})]) # Remove the borders
tree["columns"] = ("one", "two")
tree.column("one", width=200)
tree.column("two", width=200)
tree.heading("#0", text='ID', anchor='center')
tree.column("#0", anchor="center")
tree.heading("one", text="Car")
tree.heading("two", text="Quantity")
tree.tag_configure('odd', background='#E8E8E8')
tree.tag_configure('even', background='#DFDFDF')
cpt = 0 # Counter representing the ID of your code.
for row in records:
# I suppose the first column of your table is ID
tree.insert('', 'end', text=str(cpt), values=(row[1], row[2]), tags =('ttk', 'simple'))
cpt += 1 # increment the ID
tree.place(x = 100, y = 130)
Label(screen7,text = "DATA" , bg = "black", width = w , height = h, font = ("Calibri", 20) , fg = "white").pack()
Button(screen7, text="Back", height=h, width="20", command=on_closemindta).place(x=500, y=380)
Button(screen7, text="Add", height=h, width="20", command=adddata).place(x=150, y=380)
Button(screen7, text="Delete", height=h, width="20", command=delete).place(x=325, y=380)
每次我运行它都会给我一个截断不正确的 DOUBLE 值的错误:'%s' 我真的不知道这意味着什么,我错过了什么吗? 这是我单击删除按钮时打印的完整错误代码
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\lenovo\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:/Users/lenovo/PycharmProjects/Pylog/App.py", line 420, in delete
mycursor.execute(sql_select_Query, selected_item)
File "C:\Users\lenovo\PycharmProjects\Pylog\venv\lib\site-packages\mysql\connector\cursor.py", line 569, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "C:\Users\lenovo\PycharmProjects\Pylog\venv\lib\site-packages\mysql\connector\connection.py", line 553, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "C:\Users\lenovo\PycharmProjects\Pylog\venv\lib\site-packages\mysql\connector\connection.py", line 442, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.DataError: 1292 (22007): Truncated incorrect DOUBLE value: '%s'
【问题讨论】:
-
这意味着您查询中的
%s不是有效整数。您的查询中确实有该字符串。
标签: python-3.x treeview mysql-workbench mysql-python ttk