python - 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
解决方案
推荐阅读
- asp.net - 如何在 WebForm ASP.Net 中模拟 MVC 路由?
- r - 使用正则表达式在 R 中提取数据
- python - 使用 Beautiful Soup 抓取网站的十大故事
- dll - 在 cygwin 中使用 gfortran 构建 Fortran dll 并将其链接到 fortran 代码
- jodatime - Joda-time:如何将本地时间转换为 UTC,然后仅使用毫秒转换为另一个本地时间?
- json - 将 cURL 转换为 Applescript
- android - 如何模拟 DataSource.Factory 进行单元测试
- html - 检查输入 html 中的属性以在块位置不同时使用 css 隐藏内容
- python - 创建一个新的 DataFrame 列并用 If 语句填充它 - Python
- javascript - Foreach 循环和 ajax 中的 Bootstrap Collapse