Recuperar datos dinámicos de MySQL mediante consultas de Python
Al consultar periódicamente una base de datos MySQL que cambia rápidamente desde Python, es posible que espere una enfoque para obtener consistentemente los datos más recientes. Sin embargo, puede encontrar una situación en la que se devuelvan repetidamente los mismos datos.
Este problema se debe al nivel de aislamiento predeterminado de MySQL, REPEATABLE READ. Con este nivel, las lecturas dentro de una transacción utilizan una instantánea de los datos tal como existían al inicio de la transacción. Las consultas posteriores dentro de la misma transacción leerán esta instantánea en lugar de actualizarla.
Para resolver esto, debe confirmar la conexión después de cada consulta, asegurándose de que la siguiente transacción recupere los datos más recientes. Así es como puedes modificar tu código 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)
Al agregar mydb.commit() después de cada consulta, obliga a MySQL a confirmar la transacción y actualizar la instantánea. Esto permite que consultas posteriores accedan a los datos más recientes.
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