PyMySQL在循环中选择数据不会返回所有记录

时间:2016-11-30 06:42:08

标签: python mysql 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。
  5. 如果我重新启动我的脚本然后它选择新插入的记录id = 2,但如果那时我从MySQLWorkbench插入另一条记录它找不到它(除非我重新启动我的脚本)

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

    更新

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

1 个答案:

答案 0 :(得分:1)

  

但是为什么我在做select时需要提交更改?这是正常的吗?

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