sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo deshabilitar el almacenamiento en caché de SQLAlchemy?

La causa habitual de que las personas piensen que hay un "caché" en juego, además del mapa de identidad SQLAlchemy habitual que es local para una transacción, es que están observando los efectos del aislamiento de la transacción. La sesión de SQLAlchemy funciona de forma predeterminada en un modo transaccional, lo que significa que espera hasta session.commit() se llama para conservar los datos en la base de datos. Durante este tiempo, otras transacciones en curso en otros lugares no verán estos datos.

Sin embargo, debido a la naturaleza aislada de las transacciones, hay un giro adicional. Esas otras transacciones en curso no solo no verán los datos de su transacción hasta que se confirmen, sino que tampoco podrán verlos en algunos casos hasta que se confirmen o reviertan también (que es el mismo efecto que tu close() está teniendo aquí). Una transacción con un grado medio de aislamiento conservará el estado que ha cargado hasta el momento y seguirá brindándole el mismo estado local a la transacción aunque los datos reales hayan cambiado; esto se denomina lecturas repetibles en el lenguaje de aislamiento de transacciones.

http://en.wikipedia.org/wiki/Isolation_%28database_systems%29