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 
                  
                  
                  
                  
                  
                  ?
                  
                  
                
 mrdw️
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          mrdw️
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  оказывается тут и на русском можно, вообщем как думаете, это баг или фича? Если удалить объект, и вывести через принт через ту же сессию, то он продолжает существовать, даже после commit, flush и get А если сделать те же самые действия, но после commit создать новую сессию, то объект уже не будет существовать
delete помечает объект к удалению и при флаге удаляет его в бд. Сам объект в памяти никуда не девается
 mrdw️
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          mrdw️
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  получается session.get берет данные из памяти или какого то кэша внутри сессии?
Да, там внутри identity map
 mrdw️
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          mrdw️
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  не очевидно) надо запомнить
Обсуждают сегодня