Обичайната причина хората да мислят, че има "кеш" в игра, освен обичайната карта на идентичност на SQLAlchemy, която е локална за транзакция, е, че наблюдават ефектите от изолирането на транзакциите. Сесията на SQLAlchemy работи по подразбиране в транзакционен режим, което означава, че изчаква до session.commit()
се извиква, за да запази данните в базата данни. През това време други текущи транзакции на друго място няма да виждат тези данни.
Въпреки това, поради изолирания характер на транзакциите, има допълнителен обрат. Тези други транзакции в ход не само няма да видят данните на транзакцията ви, докато не бъдат ангажирани, но също така няма да могат да ги видят в някои случаи, докато не бъдат ангажирани или върнати назад също (което е същият ефект, който вашият close() има тук). Транзакция със средна степен на изолиция ще задържи състоянието, което е заредил досега, и ще продължи да ви дава същото състояние локално на транзакцията, въпреки че реалните данни са се променили - това се нарича повтарящо се четене на език за изолация на транзакциите.
http://en.wikipedia.org/wiki/Isolation_%28database_systems%29