【发布时间】: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