PyMySQL 在循环 returns 中选择数据不是所有记录

PyMySQL selecting data in loop returns not all records

我遇到 PyMySQL 数据问题 selection in loop。

  1. xxx table 包含一条记录 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 table,等等。id = 2

  4. 问题:我的脚本不打印新记录它只打印 id=1。

如果我重新启动我的脚本,那么它 select 新插入的记录 id=2,但是如果我从 MySQLWorkbench 插入另一条记录,它就找不到它(除非我重新启动我的脚本)

你能解释一下如何循环检索数据库中的所有记录吗?

更新:

我通过向连接添加 autocommit=True 参数解决了问题。但是为什么我在做 select 时需要提交更改?正常吗?

But why I need to commit changes when I am doing select? Is it normal?

是的。这是正常的。你必须学习事务隔离级别。