[Python] TypeError: Object of type Project is not JSON serializable

Discussão em 'Python' iniciado por Stack, Setembro 26, 2024.

  1. Stack

    Stack Membro Participativo

    I am learning FastAPI.

    My code:

    main.py

    from . import models, schemas
    from .database import SessionLocal, engine

    models.Base.metadata.create_all(bind=engine)

    app = FastAPI()

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

    @app.get("/projects/", response_model=list[schemas.ProjectSchema])
    def list_project(db: Session = Depends(get_db)):
    """ Get all projects"""
    projects = db.query(models.Project).all()
    print("XXX_ ", projects) # XXX_ [<src.models.Project ...]
    return JSONResponse(content={"message": projects})


    models.py

    from sqlalchemy import Column, Integer, String
    from sqlalchemy.orm import relationship
    from .database import Base

    class Project(Base):
    __tablename__ = "projects"
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False, unique=True)


    schemas.py

    from typing import List, Union
    from pydantic import BaseModel

    class ProjectSchema(BaseModel):
    name: str
    class Config:
    orm_mode = True


    I have an error for GET /projects request:


    TypeError: Object of type Project is not JSON serializable
    ​

    I have read FastAPI TypeError: Object of type 'ModelMetaclass' is not JSON serializable.

    I checked that response_model=list[schemas.ProjectSchema] is OK. How to fix the error?

    Continue reading...

Compartilhe esta Página