fastapi用户系统模块——“获取单个字典值”

@router.get("/dict/detail/{_id}", summary="获取单个字典值")
async def getDictDetail(*,
                        _id: int,
                        db: Session = Depends(deps.get_db),
                        u: Users = Depends(deps.user_perm(["system:dict:detail:get", "system:dict:detail:put"])),
                        ):
    return respSuccessJson(curd_dict_detail.get(db, _id=_id))

这段代码是一个基于FastAPI框架的Python后端接口,使用了路径操作装饰器@router.get来定义一个GET请求的接口。这个接口的路径是"/dict/detail/{_id}",表示获取单个字典值的详细信息。其中_id是路径参数,用来指定要获取的字典值的ID。

在函数参数中,有_id表示路径参数中的ID,db表示数据库会话,u表示用户对象。dbu都是通过依赖注入(Depends)获取的,db通过deps.get_db函数获取数据库会话,u通过deps.user_perm函数获取用户权限。

函数内部调用了curd_dict_detail.get(db, _id=_id)来获取指定ID的字典值的详细信息,并通过respSuccessJson函数将结果以JSON格式返回。

    def get(self, db: Session, _id: int, to_dict: bool = True):
        """ 通过id获取 """
        row = db.query(*self.query_columns, DictData.dict_name, DictData.dict_type).outerjoin(  # outerjoin() == LEFT JOIN, join() == INNER JOIN, 不支持 RIGHT JOIN (可以考虑表顺序实现)
            DictData).filter(self.model.id ==_id, self.model.is_deleted == 0).first()   
        return dict(row or {}) if to_dict else row

这段代码是一个Python函数,它接受一个数据库会话db和一个整数_id作为参数,并且有一个默认参数to_dict,默认值为True。

在函数内部,它首先使用db.query来查询数据库,查询的内容包括self.query_columns定义的列以及DictData.dict_nameDictData.dict_type。它使用了outerjoin来进行左连接操作,连接的条件是DictData表。然后使用filter来过滤查询的条件,包括self.model.id == _idself.model.is_deleted == 0。最后使用first来获取查询结果的第一条记录。

如果to_dict为True,它会将查询结果转换为字典形式并返回,否则直接返回查询结果。如果查询结果为空,则返回空字典或者None,具体取决于to_dict参数的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值