In Python(FastAPI) SQlAlchemy(sqlite) Update Operation Yielded Unexpected Result. here the code # schemas.py class User(BaseModel): uid: int num: int # model.py class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) uid = Column(Integer, unique=True, index=True) num = Column(Integer) # crud.py def getdata(db: Session, user: int): return db.query(model.User).filter(model.User.uid == user).first() # output: uid: 0, id: 1, num: 50 def updatedata(db: Session, user: schemas.User): # output: user = uid: 0, id: 1, num: 10 nuser = db.query(model.User).filter(model.User.uid == user.uid).one_or_none() #output: uid: 0, id: 1, num: 10. # expect output: uid: 0, id: 1, num: 50? nuser.num -= user.num # output: nuser.num: 10, user.num: 10 = 0, # expect: 50-10=40 db.add(nuser) db.commit() db.refresh(nuser) nuser1 = db.query(model.User).filter(model.User.uid == user.uid).one_or_none() # output: uid: 0, id: 1, num: 0 return nuser1 # output: uid: 0, id: 1, num: 0 # main.py @app.post("/test/{user}") def cal(user: int, db: Session = Depends(get_db)): userdata = crud.getdata(db, user=user) # output: userdata = uid: 0, id: 1, num: 50 userdata.num = 10 # output: now userdata = uid: 0, id: 1, num: 10 user = crud.updatedata(db, userdata) return user # output: uid: 0, id: 1, num: 0 if in main.py crud.getdata(db, user=user) not called and manually provide the value when req then nuser = db.query(model.User).filter(model.User.uid == user.uid).one_or_none() working as expected. so the main problem is userdata.balance set to 10 or any value, nuser also set the same value rather then get the data from db. is this expected behavior? or problem in my code? can someone please explain what is problem here. I am newbie in python and stuff also not good in english so sorry if there any mistakes. Thanks Continue reading...