Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

4.12. 解决 Sqlalchemy 返回模型无法打印的问题

直接打印返回结果

		
<models.model.Picture object at 0x1063e9910>		
		
		

倒入依赖,然后使用 jsonable_encoder 编码

		
from fastapi.responses import JSONResponse
from fastapi.encoders import jsonable_encoder		
		
		
		
@router.get(
    "/{android_id}/open/{id}",
    summary="打开绘本",
    description="开始阅读绘本作品",
)
async def open(id: int):
    session = database.session()
    book = {}
    try:
        from sqlalchemy.orm import load_only

        book["book"] = session.query(PictureBook).filter(PictureBook.id == id).first()
        book["story"] = (
            session.query(Picture)
            .join(PictureBookHasPicture, Picture.id == PictureBookHasPicture.picture_id)
            .filter(PictureBookHasPicture.picture_book_id == id)
            .options(load_only(Picture.image, Picture.story))
            .all()
        )
        if book["book"]:
            response = Response(True, "打开绘本", jsonable_encoder(book))
        else:
            response = Response(False, "打开绘本没有数据", None)
    except Exception as e:
        response = Response(False, e, None)
        logger.error(response)
    finally:
        session.close()
    logger.info(response)
    return JSONResponse(content=response)