2016-11-30 1 views
0

루프에서 PyMySQL 데이터 선택에 문제가 있습니다. 내 스크립트 내가 MySQL 워크 벤치를 열고 등 테이블을 xxx는 새로운 기록, ID를 삽입 실행되는 동안루프에서 데이터를 선택하는 PyMySQL이 모든 레코드를 반환하지 않습니다.

  1. XXX 테이블을 포함하는 하나 개의 레코드 ID 내가 스크립트

    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() 
    
  2. 1

  3. 시작입니다 = = 2

  4. 문제점 : 스크립트가 id = 1로 인쇄되는 새 레코드를 인쇄하지 않습니다.

난 내 스크립트 그때는 새로운 삽입 된 레코드 ID = 2를 선택,하지만 난 MySQL 워크 벤치에서 다른 레코드를 삽입 한 후 경우는 (내가 내 스크립트를 다시 시작하지 않는 한)

를 어떻게 설명 할 수 그것을 찾을 수없는 다시 시작하면 루프에서 데이터베이스의 모든 레코드를 검색 하시겠습니까?

업데이트 :

나는 연결에 autocommit=True PARAM를 추가하여 문제를 해결했다. 그러나 내가 선택을 할 때 왜 변화를 저지를 필요가 있습니까? 정상입니까?

+0

의가에 대해 알아 보자 "트랜잭션 격리 수준." – methane

답변

관련 문제