社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

删除在python gui树视图中选择的行,然后将其从sqlite3数据库中删除

Abdul-Aziz Muhammad • 5 年前 • 1418 次点击  

我在用Tkinter。我有一个treeview,我在treeview中显示来自sqlite数据库的数据。但是,我添加了一个delete函数,可以从treeview中选择值,然后使用delete函数和按钮删除它们。它从树视图中删除,但不从数据库中删除。

def delete():
name2 = name_1.get()
phone2 = phone_number.get()
conn2 = sq.connect('Clients.db')
c2 = conn2.cursor()
selected_item = tree1.selection_set()
query = "DELETE FROM clients WHERE name=? AND phone=?"
c2.execute(query,(selected_item,))
conn2.commit()
tree1.delete(selected_item)






root = Tk()
root.geometry("800x800")
root.title("Hello")
root.configure(background="powder blue")
header = Label(root, text = "Clients Database",    font=("arial",30,"bold")).pack()

con = sq.connect('Clients.db')
c = con.cursor()
c.execute("CREATE TABLE IF NOT EXISTS clients (name TEXT, phone TEXT)")
con.commit


tree1 = ttk.Treeview(root, height=10, columns=("Name", "PhoneNumber"),   show=["headings"])
tree1.column('Name', anchor=W)
tree1.column('PhoneNumber', anchor=W)
tree1.heading('Name', text="Name")
tree1.heading('PhoneNumber', text="Phone Number")

我得到同样的错误:

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.6/tkinter/__init__.py", line 1705, in __call__
return self.func(*args)
File "/home/zizibaby/Desktop/Ingredients .py", line 38, in delete
c2.execute(query,(selected_item,))
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The  current statement uses 2, and there are 1 supplied.
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/44316
 
1418 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Henry Yik
Reply   •   1 楼
Henry Yik    6 年前

我很好奇你为什么要用 selected_item = tree1.selection_set() .

从文档中:

选择集(*项)

项将成为新的选择。

在版本3.6中更改:项可以作为单独的参数传递,而不是 就像一个元组。

在我看来你应该用 tree.selection() 相反。