python - 如何在Treeview Tkinter中刷新MySQL数据?

标签 python mysql tkinter

代码

我有这个功能:

#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/

相关文章:

Windows(64 位)上的 Python 2.7.8(64 位)在 Ubuntu(64 位)上的速度是 2.7.8(64 位)的一半

mysql - 无法更新存储触发器中的表,因为它已被调用此存储触发器的语句使用

Python Tkinter 显示名称前面带有 Hi

Python:使用 Tkinter 单选按钮从 GUI 添加/删除字段

python - 如何创建一个按钮来选择所有复选按钮

python - Pandas 结合两个数据框将列的子集附加到输出表的行

file-io - 作为副作用,处理文件的类或方法是否应该关闭文件?

python - 用于部分传输的 Vulkan VkBufferImageCopy

mysql - 有没有更好的方法来构建具有广泛 WHERE 条件的 MySQL 查询?

android - Android 和 MySQL/PHP 数据库连接问题