Как обновить данные MySQL в Treeview Tkinter? - PullRequest
0 голосов
/ 11 декабря 2019

Код

У меня есть эта функция:

#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 - откройте его снова - нажмите refresh, он покажет новые исправленные данные.

Если приложение tkinter запущено - ЕслиЯ пытаюсь выполнить следующий запрос: truncate table с использованием рабочей среды - MySQL не выполнит запрос действия, пока я не закрою приложение tkinter

Что он должен делать

Когда я активирую функцию refresh - она ​​должна удалить все текущие данные в древовидной структуре и обновить их до существующих значений в MySQL.

Quesiton

Как мне добитьсяэто?

1 Ответ

2 голосов
/ 12 декабря 2019

Из @ brunodesthuilliers ссылка в комментариях Уровень изоляции транзакций MySQL помог мне найти, что было не так!

Запустив этот запрос в 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]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...