【问题标题】:Fastapi: put methodFastapi:放置方法
【发布时间】:2022-07-05 07:12:14
【问题描述】:

我希望能够大摇大摆地只更改put方法中的一个字段,而不必为put定义一个新类。在这种情况下,由于所有字段都是必需的,因此我无权删除它们并更改put 字段中只有一项,但我只想更改一个字段而不添加新类。 谢谢你的帮助

from pydantic import BaseModel
class User(BaseModel):
name: str 
email: str 
password: str




#------------------------------------------------------
from fastapi import FastAPI
user_ = FastAPI()
@user_.post("/")
def write_data(user_: User):
conn.execute(users.insert().values(
    name= user_.name,
    email= user_.email,
    password= user_.password
))



return{ 'New data  added' }

@user_.put("/{id}")
def update_data(id: int, user_: User):
a=conn.execute("SELECT id FROM users")
b=a.fetchall()
my_list=np.array(b)
if id in my_list:
    conn.execute(users.update().values(
    name= user_.name,
    email= user_.email,
    password= user_.password
        
    ).where(users.c.id == id ))
    

    
    return {'data updated white ID ' +str(id)} 
else: 
    
   
    return {'No data has been registered for ID ' +str(id)}

【问题讨论】:

  • 您必须以某种方式定义输入参数 - 如果您的输入模式不匹配,请不要使用它。您想在 update_data 函数中更改什么值?顺便说一句:不要以这种方式使用np.array - 使用SELECT id FROM users WHERE id = ..,而是使用语法(带有占位符)来仅选择实际用户。无需获取所有用户,将其转换为 np 数组,然后检查 id 是否在数组中。

标签: python sqlalchemy fastapi put


【解决方案1】:

我不确定你到底想要什么,但如果你想部分更新数据,这可能会对你有所帮助https://fastapi.tiangolo.com/tutorial/body-updates/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2022-07-20
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2011-12-27
    相关资源
    最近更新 更多