PyMySQL выбор данных в цикле возвращает не все записи

У меня возникли проблемы с выбором данных PyMySQL в цикле.

  1. таблица xxx содержит одну запись id = 1
  2. Я запускаю сценарий

    import pymysql
    import time
    connection = pymysql.connect(host="127.0.0.1",
                                 port=3306,
                                 user="yyy",
                                 passwd="yyy",
                                 db="yyy",
                                 charset='utf8',
                                 cursorclass=pymysql.cursors.DictCursor)
    
    while True:
        with connection.cursor() as cursor:
            sql = "select * from xxx"
            cursor.execute(sql)
            result = cursor.fetchall()
            print result
    
        time.sleep(5)
    
    connection.close()
    
  3. Пока мой скрипт запущен, я открываю MySQLWorkbench и вставляю новую запись в таблицу xxx и т. Д. Id = 2

  4. Проблема: мой скрипт не печатает новую запись, он просто печатает id = 1.

Если я перезапускаю свой скрипт, он выбирает новую вставленную запись с идентификатором = 2, но если затем я вставляю другую запись из MySQLWorkbench, он не находит ее (если я не перезапускаю свой скрипт)

Не могли бы вы объяснить, как получить все записи из базы данных в цикле?

Обновление:

Я решил проблему, добавив параметр autocommit=True в соединение. Но почему мне нужно фиксировать изменения, когда я делаю выбор? Это нормально?


person Tomas Rasymas    schedule 30.11.2016    source источник
comment
Давайте узнаем об уровне изоляции транзакций.   -  person methane    schedule 01.12.2016


Ответы (1)


Но почему мне нужно фиксировать изменения, когда я делаю выбор? Это нормально?

да. Это нормально. Вы должны изучить уровень изоляции транзакции.

person methane    schedule 06.12.2016