代码
我有这个功能:
#Refresh MySQL data to Treeview
def refresh(self):
self.table.delete(*self.table.get_children())
cursor = mydb.cursor()
cursor.execute("select * from requested order by done")
for row in cursor:
self.table.insert('','end', values = (row[8], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[9], row[10], row[12]))
如果我插入一条记录或更新一条记录 - 使用工作台。当我在 Tkinter 中按刷新时,它不会显示任何新的或修改的数据。保持原样。
但是 - 如果我退出 Tkinter 应用程序 - 重新打开它 - 单击刷新
它将显示新的修改数据。
如果 tkinter 应用程序正在运行 - 如果我尝试运行以下查询:使用工作台截断表
- MySQL 将不会完成查询操作,直到我关闭 tkinter 应用程序
它应该做什么
当我激活函数refresh
时,它应该删除 TreeView 中的所有当前数据,并使用 MySQL 中的现有值更新它。
问题
我怎样才能做到这一点?
最佳答案
来自@brunodesthuilliers评论里的链接MySQL transaction isolation level帮助我找到了问题所在!
通过在 MySQL Workbench 中运行此查询:
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
允许我从 MySQL 更新记录并运行下面的这个函数 - 没有问题!
#Refresh MySQL data to Treeview
def refresh(self):
self.table.delete(*self.table.get_children())
cursor = mydb.cursor()
cursor.execute("select * from requested order by done")
for row in cursor:
self.table.insert('','end', values = (row[8], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[9], row[10], row[12]))
关于python - 如何在Treeview Tkinter中刷新MySQL数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59289813/