Число строк Python и MySQL ведет себя не так, как ожидалось

#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() сработало правильно и позволило мне изменить значение в таблице, и оно изменилось для моего скрипта без перезапуска.