MySQL / Python – los cambios comprometidos no aparecen en bucle

Usando MySQL Connector / Python tengo un bucle que sigue revisando un valor para un cambio cada 2 segundos. Sin toda la carne, aquí está el bucle (la impresión está ahí para propósitos de prueba:

try: while True: request = database.get_row(table="states", wherecol="state", whereval="request_from_interface")[0] print(request.value) time.sleep(2) except KeyboardInterrupt: pass # back to normal operation 

get_row es una consulta de selección simple y devuelve la fetchall nombrada con nombre (por lo tanto, el [0] al final, solo será una fila).

El problema es que una vez que obtiene el valor inicial, sigue devolviendo ese valor incluso si lo cambio. Por ejemplo, si es “0” comenzar, sigue imprimiendo “0” incluso si voy a administrador y lo cambio e incluso si abro un nuevo terminal, lo cambio y lo confirmo. He intentado configurar el query_cache_size a 0, todavía no tengo suerte. Pensé que era un problema de compromiso, pero tampoco era eso. Si lo cambio y vuelvo a conectar, veo el cambio, pero no estoy seguro de por qué no cambiará mientras esté en el progtwig. ¿Alguna idea?

EDITAR: en caso de que aparezca, sí, estoy cerrando el cursor y agarrando un nuevo cursor con cada llamada.

El nivel de aislamiento predeterminado de InnoDB es REPEATABLE READ . Esto significa que las siguientes instrucciones SELECT consistentes leerán la misma instantánea establecida por la primera dentro de una transacción. Aunque está abriendo y cerrando los cursores, es probable que esté haciendo eso dentro de una transacción y, por lo tanto, está leyendo la instantánea establecida una y otra vez. ROLLBACK o COMMIT para finalizar la transacción actual para que pueda leer los valores confirmados después de que se tomó la instantánea.