You need to enable JavaScript to run this app. 如何用if/else构造适配AWS Aurora Serverless API的Python参数字典列表
优惠活动
大模型
产品
解决方案
定价
更多

如何用if/else构造适配AWS Aurora Serverless API的Python参数字典列表

符合boto3 Aurora Serverless入参规则的参数列表构造方法

可以通过「列配置清单遍历生成」的方式实现动态适配None值的入参结构,不需要硬编码每一列的判空逻辑,代码可维护性更高,具体实现如下:

核心实现逻辑

  • 先统一整理所有列的元信息:列名、关联的全局变量值、对应的boto3值类型字段名
  • 遍历每一项判断值是否为None:如果是就生成isNull: True的结构,否则生成带value字段的常规结构

代码示例

# 定义列配置清单,每一项格式为 (列名, 关联变量, 对应的值类型字段)
col_config_list = [
    ("col1", gv_col1, "stringValue"),
    ("col2", gv_col2, "longValue"),
    ("col3", gv_col3, "longValue"),
    ("col4", gv_col4, "stringValue"),
    ("col5", gv_col5, "doubleValue"),
]

v_sql_parameters = []
for col_name, col_val, val_type in col_config_list:
    if col_val is None:
        v_sql_parameters.append({"name": col_name, "isNull": True})
    else:
        v_sql_parameters.append({
            "name": col_name,
            "value": {val_type: col_val}
        })

如果偏好更紧凑的写法,也可以用列表推导式实现同样效果:

v_sql_parameters = [
    {"name": c_name, "isNull": True} if c_val is None 
    else {"name": c_name, "value": {c_type: c_val}}
    for c_name, c_val, c_type in col_config_list
]

注意事项

判空时请使用is None做身份判断,不要用== None,避免遇到重写了相等判断逻辑的自定义对象时出现判断偏差,更适配boto3接口的入参校验逻辑。

效果验证

模拟变量赋值测试:

# 模拟全局变量值
gv_col1 = None
gv_col2 = 1001
gv_col3 = 2002
gv_col4 = "测试字符串"
gv_col5 = 6.28

运行代码后生成的参数结构完全匹配接口要求:

[
    {'name': 'col1', 'isNull': True},
    {'name': 'col2', 'value': {'longValue': 1001}},
    {'name': 'col3', 'value': {'longValue': 2002}},
    {'name': 'col4', 'value': {'stringValue': '测试字符串'}},
    {'name': 'col5', 'value': {'doubleValue': 6.28}}
]

这种方式的优势是:

  • 从根源上避免直接把None传入stringValue、longValue等值字段触发的boto3接口参数校验报错
  • 后续新增列时,只需要在col_config_list里加一行配置即可,不需要重复写判空和字典构造逻辑,不容易出现漏改、结构不匹配的问题

内容的提问来源于stack exchange,提问作者museshad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 23:36:05