Я изучаю SQLAlchemy ORM и думаю, что у меня есть знания по основам. Хотя мне интересно знать одну вещь: когда вносится изменение, подразумевающее запись в базу данных (например, session.add(my_object)
), это изменение обрабатывается как в ожидании в сеансе и не записывается до тех пор, пока следующий запрос.
Что мне интересно, так это: все такие записи всегда записаны перед следующим запросом, или следующий запрос должен быть как-то связан с ожидающей записью? Например, если я введу команду session.add(my_object)
, а затем моя следующая команда будет session.query(ClassOfMyObject).filter(...some condition which would match my_object).all()
, я знаю, что первая запись обязательно будет сброшена перед выполнением этого последнего запроса. Но что, если объекты совершенно не связаны, например, session.add(apple)
и session.query(Orange).filter(...)
где нет даже внешнего ключа между яблоками и апельсинами? Будет ли написано apple
до того, как мы запросим Orange
?
Кроме того, в чем причина такой задержки? Почему бы не всегда сразу все промыть?