首页 > 解决方案 > Tkinter,使用 sqlite3 更新树:OperationalError:没有这样的表:树

问题描述

几天前,我开始制作我的第一个 GUI 软件,我已经设置了标签/按钮/条目,将条目连接到 SQL 数据库,创建了一个显示在我想要的框架中的树列表,并用数据库填充树(即正确的条目显示在树的正确列中),因此所有这些都可以正常工作。现在我没有正确的函数来更新树,所以每次我运行程序(出于测试目的),它都会保存当前的条目列表并一遍又一遍地添加新的条目,所以我有一个列表我运行的所有测试中的几十行。

这是我添加更新功能的尝试:

def treeUpdate(): 
    for child in tree.get_children():          
        print(child)                       ## nothing is printed out here 
        tree.delete(child)
    c.execute('SELECT column1, column2, column3, column4 FROM tree')
    records = c.fetchall()
    for i in records: 
        tree.insert("", "end", text ="", values=(i[0],i[1],i[2],i[3]))
    conn.close()

我得到的错误是:

OperationalError:没有这样的表:树

这是树代码的一部分:

tree = ttk.Treeview(BottomFrame)
tree['columns'] = ('column1','column2', 'column3','column4')
tree.heading("#0", text = '', anchor = "w")
tree.column("#0", width = 5, anchor = 'center', stretch = tk.NO)
tree.heading("#1", text = 'File Name', anchor = "w")
tree.heading("#2", text = 'Archive Interval',anchor = "w")
tree.heading("#3", text = 'Delete Interval',anchor = "w")
tree.heading("#4", text = 'Output Directory',anchor = "w")
tree.pack(fill = "both")
print("tree created")         ## this is printed successfully 

我知道那棵树不是一个 sql 表,所以我猜你不能使用 sql 命令来操作树?有没有其他方法可以做到这一点?如果有任何帮助,我已经在将新条目添加到数据库的函数中包含了更新函数(见下文),但没有包含检索记录并将它们添加到树中的函数。

def Add(): 
    conn = sqlite3.connect('FilesToArchive.db')
    c = conn.cursor()
    c.execute("INSERT INTO Files VALUES (:Filename, :Time_Interval, :Delete_Interval, :Destination)",
            {
               'Filename': str(filedir.get()),
               'Time_Interval': Interval.get(),
               'Delete_Interval': DelInt.get(),
               'Destination': str(outputdir.get())
            }
        )
    conn.commit()       
    treeUpdate()
    #c.close()                          
    pass

标签: pythonsqlitetkinter

解决方案


推荐阅读