"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué mi consulta Python MySQL sigue arrojando los mismos datos?

¿Por qué mi consulta Python MySQL sigue arrojando los mismos datos?

Publicado el 2024-11-19
Navegar:830

Why Does My Python MySQL Query Keep Returning the Same Data?

Consultas en MySQL desde Python que generan datos idénticos

Consultar repetidamente una base de datos MySQL desde Python para recuperar datos dinámicos plantea un desafío. Se sabe que simplemente iterar a través de una consulta en un bucle no es suficiente para obtener datos nuevos de la base de datos.

El código proporcionado ejemplifica este problema:

for i in range(listSize):
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...

Incluso con los intentos de usar fetchall, fetchmany y fetchone, los resultados permanecen estancados.

La solución: confirmar la conexión

Para resolver esto, cada ejecución de consulta debe ir seguida de una confirmación de la conexión. Esta acción concluye la transacción en curso e inicia una nueva, lo que permite que la consulta posterior detecte modificaciones realizadas durante la transacción anterior.

while True:
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...
    mydb.commit()
    #...

Niveles de aislamiento y LECTURA REPETIBLE predeterminada

Este concepto tiene sus raíces en los niveles de aislamiento. De forma predeterminada, MySQL emplea LECTURA REPETIBLE para InnoDB. Esto implica que dentro de una transacción, las lecturas posteriores retendrán la instantánea establecida por la lectura inicial de la transacción. Por lo tanto, sin confirmar, las consultas posteriores no capturarán ninguna modificación.

Último tutorial Más>

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