Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.1K
Visualizações
Cómo actualizar parcialmente los datos con FastAPI y PyDantic BaseModel usando PATCH

Me gustaría actualizar parcialmente la base de datos a través del método PATCH en FastAPI. Uso Postgres como mi base de datos, Postman para probar.

Seguí el ejemplo en el documento FastAPI, enlace: https://fastapi.tiangolo.com/tutorial/body-updates/#parcial-updates-with-patch

Utilizo GET para obtener los datos originales en la base de datos, copio el contenido en body raw json, luego cambio la parte donde necesito actualizar y elijo PATCH, hago clic en enviar en Postman, ocurre un error: main.Product() argumento después de ** debe ser un mapeo, no un producto

¿Cuál es el enfoque correcto para los datos PATCH? Omití el código para conectarme a Postgres usando psycopg2

 from fastapi import FastAPI, Response, status, HTTPException, Path from fastapi.encoders import jsonable_encoder from pydantic import BaseModel app = FastAPI() class Product(BaseModel): name: str price: float inventory: int @app.get("/posts/{id}") def get_a_post(id: int = Path(None, title='Prod ID')): cursor.execute('''SELECT * FROM public.products WHERE ID = %s''',(str(id),)) post = cursor.fetchone() if not post: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"product with id {id} was not found!") return post @app.patch("/posts/{id}", response_model=Product) def patch_posts(id: int, post: Product): stored_data = post stored_model = Product(**stored_data) update_data = post.dict(exclude_unset=True) updated_data = stored_model.copy(update=update_data) post = jsonable_encoder(updated_data) return{"partially updated product": post}
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Parece que su problema se debe a que intenta obtener los pares clave/valor a través **stored_data , pero esa variable es de tipo Product .

En su función patch_posts , cambie stored_data = post a stored_data = post.dict() .

Usando el ejemplo que proporcionaste:

 import uvicorn from fastapi import FastAPI from fastapi.encoders import jsonable_encoder from pydantic import BaseModel app = FastAPI() class Product(BaseModel): name: str price: float inventory: int @app.patch("/posts/{id}", response_model=Product) def patch_posts(id: int, post: Product): stored_data = post.dict() stored_model = Product(**stored_data) update_data = post.dict(exclude_unset=True) updated_data = stored_model.copy(update=update_data) post = jsonable_encoder(updated_data) return post
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda