Python의 MySQL 쿼리에서 불일치가 발생함
커밋을 하지 않았기 때문에 쿼리가 최신 데이터를 검색하지 못할 가능성이 높습니다. 데이터베이스가 변경됩니다. 기본적으로 MySQL은 격리 수준을 "REPEATABLE READ"로 설정합니다. 이는 동일한 트랜잭션 내의 후속 쿼리가 트랜잭션 중 변경된 내용이 아닌 데이터의 초기 스냅샷을 확인함을 의미합니다.
데이터가 작동하는지 확인하려면 -현재까지는 각 쿼리 후에 연결을 커밋해야 합니다. 그러면 현재 트랜잭션이 완료되고 데이터베이스에서 가장 최근 변경 사항을 가져오기 위해 다음 트랜잭션이 준비됩니다.
다음은 필요한 커밋이 포함된 업데이트된 코드 버전입니다.
# 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 changes!
mydb.commit()
print("---")
sleep(0.1)
이 수정을 통해 이제 코드는 각 쿼리 루프 동안 데이터베이스에서 최신 데이터를 검색합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3