Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como desabilitar o cache do SQLAlchemy?


A causa comum para as pessoas pensarem que há um "cache" em jogo, além do mapa de identidade SQLAlchemy que é local para uma transação, é que eles estão observando os efeitos do isolamento da transação. A sessão do SQLAlchemy funciona por padrão em um modo transacional, o que significa que espera até session.commit() é chamado para persistir os dados no banco de dados. Durante esse período, outras transações em andamento em outros lugares não verão esses dados.

No entanto, devido à natureza isolada das transações, há uma reviravolta extra. Essas outras transações em andamento não apenas não verão os dados da sua transação até que ela seja confirmada, como também não poderão vê-los em alguns casos até que sejam confirmadas ou revertidas também (que é o mesmo efeito que seu close() está tendo aqui). Uma transação com um grau médio de isolamento manterá o estado carregado até agora e continuará fornecendo o mesmo estado local para a transação, mesmo que os dados reais tenham sido alterados - isso é chamado de leituras repetíveis na linguagem de isolamento de transações.

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