python - 使用 fastapi 更新数据库中的对象

标签 python api rest fastapi

我是 fastapi 新手,我希望能够在存款时更新我的​​银行帐户信息。我不知道如何做到这一点,因为我不知道补丁是如何工作的。存款中使用的逻辑是我在创建银行帐户时使用的逻辑(显然它们不应该以相同的方式工作)。这是我的模型:

class Account(Base):
   __tablename__ = "accounts"

   id = Column(Integer, primary_key=True, index=True)
   name = Column(String)
   deposits_made = Column(Integer)
   total = Column(Integer)

class PaymentRequest(BaseModel):
   bank_id: str
   amount: int

def get_db():
   try:
       db = SessionLocal()
       yield db
   finally:
       db.close()

@app.patch("/deposit")
def deposit(request: PaymentRequest, db: Session = Depends(get_db)):

   account = db.query(Account)
   account = accounts[request.id]
   account.total += request.amount
   account.deposits_made += 1
   db.add(account)
   db.commit() 
   return{
       "code":"success",
       "message":"donation made"
   }

最佳答案

您的表格需要具体


class Account(Base):
   __tablename__ = "accounts"

   id = Column(Integer, primary_key=True, index=True)
   name = Column(String)
   deposits_made = Column(Integer)
   total = Column(Integer)

您的架构应该很好地反射(reflect)您的表格,但如果您喜欢使用现有的内容:

class PaymentRequest(BaseModel):
   bank_id: str
   amount: int

然后必须进行一些计算才能成功更新表 因为必须上 table 的是:

{'name':name, 'deposits_made':deposits_made, 'total ':total}

请记住,您传入的数据只是:

bank_id: str
amount: int

话虽这么说,您的 table 没有为此做出规定,

如果bank_id与帐户表上的名称相同您至少应该给它一个更好的名称 depositor_name ,独特,...

当您决定对表格进行更改时,下面的代码将会有所帮助:


@app.put("/deposit/{id}")
def deposit(id, request:schemas.PaymentRequest, db:Session=Depends(get_db)):
    old_account = db.query(models.Account).filter(models.Account.id == id)
    if not old_account.first():
        raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,detail=f'old_account with the id {id} is not available')
    old_account.update({'name':name, 'deposits_made':deposits_made, 'total ':total})
    db.commit()
    return {"code":"success","message":"donation made"}

关于python - 使用 fastapi 更新数据库中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66523702/

相关文章:

python - 通过列表理解重复列表项可变次数

python - 删除 scipy 稀疏矩阵中的 nan 行

javascript - 如何将 id 传递给函数?

android - 在 Android 上使用哪种网络服务技术?

java - 将 6 的字符串转换为 mm/dd/yyyy h :m with conditions

python - 如何使正则表达式忽略 python 中的新行?

python - 如何在 VS Code 中设置 Python?

php - 使用 GAPI 获取无维度的指标

api - 尝试在 postman 中使用 freshdesk API 创建票证

java - 如何使用 Jersey POST 请求发送 header 和正文?