Python 쿼리를 사용하여 MySQL에서 동적 데이터 검색
Python에서 빠르게 변화하는 MySQL 데이터베이스를 주기적으로 쿼리할 때 루프 기반 쿼리를 기대할 수 있습니다. 최신 데이터를 지속적으로 가져오는 접근 방식입니다. 하지만 동일한 데이터가 반복적으로 반환되는 상황이 발생할 수 있습니다.
이 문제는 MySQL의 기본 격리 수준인 REPEATABLE READ에서 발생합니다. 이 수준에서는 트랜잭션 내의 읽기가 트랜잭션 시작 시 존재했던 데이터의 스냅샷을 사용합니다. 동일한 트랜잭션 내의 후속 쿼리는 이 스냅샷을 업데이트하지 않고 읽습니다.
이 문제를 해결하려면 각 쿼리 후에 연결을 커밋하여 다음 트랜잭션이 최신 데이터를 검색하도록 해야 합니다. Python 코드를 수정하는 방법은 다음과 같습니다.
<code class="python"># Main loop while True: # SQL query sql = "SELECT * FROM table" # Read the database, store as a dictionary mycursor = mydb.cursor(dictionary=True) mycursor.execute(sql) # Store data in rows myresult = mycursor.fetchall() # Transfer data into list for row in myresult: myList[int(row["rowID"])] = (row["a"], row["b"], row["c"]) print(myList[int(row["rowID"])]) # Commit ! mydb.commit() print("---") sleep (0.1)</code>
각 쿼리 후에 mydb.commit()를 추가하면 MySQL이 트랜잭션을 커밋하고 스냅샷을 업데이트하도록 합니다. 이를 통해 후속 쿼리에서 최신 데이터에 액세스할 수 있습니다.
위 내용은 Python 루프의 후속 쿼리가 MySQL 데이터베이스에서 동일한 데이터를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!