вот код
Код: Выделить всё
# 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
поэтому основная проблема - установлен userdata.balance до 10 или любой value, nuser также устанавливает то же значение, а не получает данные из базы данных.
это ожидаемое поведение? или проблема в моем коде? Может кто-нибудь объяснить, в чем здесь проблема.
Я новичок в Python, и я тоже не очень хорошо говорю по-английски, поэтому извините, если есть какие-либо ошибки. Спасибо
Подробнее здесь: https://stackoverflow.com/questions/793 ... ted-result
Мобильная версия