#python #mysql
Вопрос:
Я сам изучаю python и у меня есть функция под названием mysqltimedcheck()
Это выполняет очень простую инструкцию MySQL SELECT и возвращает количество строк.
Если я изменю значение «показано» с 0 на 1 в таблице mysql (во время выполнения сценария) , например, количество строк не изменится.
При отладке я вижу, что он снова запускает строку cursor.execute, но все равно выводит старое значение
вот моя функция:
def mysqltimedcheck(): cursor = mydb.cursor(buffered=True) window.after(1500, mysqltimedcheck) cursor.execute("SELECT * FROM alerts WHERE shown = 0") rc = cursor.rowcount print(rc)
Если я перезапущу тестовое приложение, оно выведет правильное значение числа строк, но изменение этого значения во время работы не будет отображаться как правильное.
Я чувствую, что упускаю что-то очень важное.
Спасибо за вашу помощь
Комментарии:
1. возвращает ли выполнение правильное значение для showed=0? Кроме того, не могли бы вы попробовать добавить mydb.commit() на всякий случай.
2. @LabibaKanij да, это так , у меня есть две строки с показанным = 0, когда я запускаю функцию, вывод равен 2, когда я меняю одну из строк на 1, количество строк по-прежнему равно 2. Если я перезапущу скрипт, он правильно вытянет 1…. СПАСИБО, что mydb.commit сработал! Отправьте его в качестве ответа, и я отмечу его как правильный.
Ответ №1:
Вся заслуга @LabibaKanij
добавление mydb.commit() сработало правильно и позволило мне изменить значение в таблице, и оно изменилось для моего скрипта без перезапуска.