Las consultas MySQL desde Python generan inconsistencias
Es probable que tu consulta no recupere los datos más actualizados porque no estás confirmando cambios en la base de datos. De forma predeterminada, MySQL establece el nivel de aislamiento en "LECTURA REPETIBLE", lo que significa que las consultas posteriores dentro de la misma transacción ven la instantánea inicial de los datos en lugar de cualquier cambio realizado durante la transacción.
Para garantizar que sus datos estén actualizados -hasta la fecha, debe confirmar la conexión después de cada consulta. Esto completa la transacción actual y prepara la siguiente transacción para recuperar los cambios más recientes de la base de datos.
Aquí hay una versión actualizada de su código con la confirmación necesaria:
# 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)
Con esta modificación, su código ahora recuperará los datos más recientes de la base de datos durante cada ciclo de consulta.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3