session1.get(User, user_id)
await session1.delete(user.some_col)
await session1.commit()
await session1.flush()
user = await session1.get(User, user_id)
print(user.some_col)
prints "<db.Signal ...>"
but this code:
user_id: int = ...
user = await session1.get(User, user_id)
await session1.delete(user.some_col)
await session1.commit()
# creating new session2
user = await session2.get(User, user_id)
print(user.some_col)
prints None
?
оказывается тут и на русском можно, вообщем как думаете, это баг или фича? Если удалить объект, и вывести через принт через ту же сессию, то он продолжает существовать, даже после commit, flush и get А если сделать те же самые действия, но после commit создать новую сессию, то объект уже не будет существовать
delete помечает объект к удалению и при флаге удаляет его в бд. Сам объект в памяти никуда не девается
получается session.get берет данные из памяти или какого то кэша внутри сессии?
Да, там внутри identity map
не очевидно) надо запомнить
Обсуждают сегодня