fastapi用户系统模块——“通过Key获取单个配置”

@router.get("/config-setting/key/{key}", summary="通过Key获取单个配置")
async def getConfigSettingByKey(*,
                                db: Session = Depends(deps.get_db),
                                r: asyncRedis = Depends(deps.get_redis),
                                key: str
                                ):
    if r:
        config_setting_obj = await curd_config_setting.getByKeyWithCache(r, db, key=key)
    else:
        config_setting_obj = curd_config_setting.getByKey(db, key=key)
    return respSuccessJson(config_setting_obj)

这段代码是一个 Python FastAPI 的端点,它通过指定的 key 获取单个配置。它使用依赖注入来获取数据库会话和 asyncRedis 实例。如果 asyncRedis 实例可用,它将使用缓存版本来获取配置设置,否则将直接从数据库中获取。最后,它使用 respSuccessJson 函数将获取的配置设置作为 JSON 响应返回。

这段代码的意思是,根据指定的 key 从数据库或缓存中获取配置设置,并将结果以 JSON 格式返回作为成功的响应。

    async def getByKeyWithCache(self, r: asyncRedis, db: Session, key: str) -> dict:
        _key = self.CACHE_KEY + key
        # if res := await r.get(_key):  # python3.8+
        res = await r.get(_key)
        if res:
            return json.loads(res)
        res = self.getByKey(db, key)
        await r.setex(_key, self.EXPIRE_TIME, json.dumps(res))
        await r.setex(self.CACHE_ID_KEY + str(res['id']), self.EXPIRE_TIME, key)
        return res   

这段代码是一个方法,它用于从缓存中获取特定键的配置设置。首先,它会构建一个带有特定前缀的缓存键。然后,它尝试从缓存中获取该键对应的值。如果找到了缓存值,它会将其解析为 JSON 格式并返回。

如果没有找到缓存值,它会调用类中的 getByKey 方法从数据库中获取配置设置。接着,它会将这个获取到的配置设置以 JSON 格式存入缓存,并设置过期时间。最后,它还会将配置设置的 ID 作为键,将键的值设置为原始的 key,并同样设置过期时间。

这段代码的意思是,它尝试从缓存中获取特定键的配置设置,如果找到则返回缓存值,如果没有找到则从数据库中获取,并将获取到的值存入缓存。

    def getByKey(self, db: Session, key: str) -> dict:
        obj = db.query(*self.query_columns).filter(self.model.key == key, self.model.is_deleted == 0,
                                                   self.model.status.in_((0,))).first()
        return {} if not obj else {
            'id': obj.id,
            'key': obj.key, 
            'name': obj.name, 
            'value': int(obj.value) if obj.value.isdigit() else obj.value
        }

这段代码定义了一个方法,用于从数据库中根据指定的键获取配置设置。它接受一个数据库会话和一个键作为参数,并返回一个包含配置设置信息的字典。

在方法内部,它使用给定的键在数据库中进行查询,筛选条件包括键值等于指定键、未被删除以及状态为 0 的记录。如果找到了匹配的记录,它会将记录的相关信息提取出来,包括 id、key、name 以及 value。在提取 value 时,它会尝试将其转换为整数类型,如果无法转换则保持原始类型。

如果没有找到匹配的记录,它会返回一个空字典。

这段代码的意思是,根据指定的键从数据库中获取配置设置的相关信息,并将其以字典的形式返回。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值