You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

boto3 DynamoDB的ProjectionExpression是否支持通配符?

DynamoDB ProjectionExpression 无通配符,简化函数的正确写法

首先明确:DynamoDB 的 ProjectionExpression 不支持通配符(如*),如果你传入*作为该参数的值,DynamoDB会将其当作一个字段名去查找,必然触发语法错误——因为你的表中不存在名为*的属性。

想要简化原函数的分支逻辑,不需要依赖不存在的通配符,而是可以通过动态构建查询参数的方式实现:

优化后的简洁函数

def get_leads(type, leadTable, **kwargs):
    client = boto3.resource('dynamodb')
    table = client.Table(leadTable)
    # 构建基础查询参数
    query_params = {
        'KeyConditionExpression': Key('lead_type').eq(type)
    }
    # 若传入attributes则添加投影参数
    attributes = kwargs.get('attributes')
    if attributes:
        query_params['ProjectionExpression'] = attributes
    try:
        return table.query(**query_params)
    except Exception as e:
        print(e)
        return 0

逻辑说明

原函数通过if-else分支分别调用query,优化后的写法通过字典动态组装参数:

  • 不传attributes时,query仅使用KeyConditionExpression,默认返回所有字段
  • 传入attributes时,自动添加ProjectionExpression参数实现字段过滤

既保留了原逻辑,又避免了冗余的分支代码,达到简化函数的目的。

内容的提问来源于stack exchange,提问作者Matthew D'vertola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:35:02