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

如何将字典映射转换为排除空值的MySQL查询语句?

解决SQL查询语句生成的字符串拼接问题

给定字典:

queryParameters = {
    "email": None,
    "party_type": "BUYER",
    "mobile": "9953610508"
}

需要生成排除None值的SQL查询语句,期望结果:

select id from tff_party where deleted_at is null and mobile=9953610508 and party_type='BUYER';

原代码存在以下问题:

  • 每次循环都会覆盖res变量,最终只保留最后一个非None的键值对
  • 未给字符串类型的值添加单引号,不符合SQL语法
  • 未拼接固定条件deleted_at is null,也没有用and连接多个条件

修正后的代码实现

queryParameters = {
    "email": None,
    "party_type": "BUYER",
    "mobile": "9953610508"
}

# 初始化条件列表,包含固定的软删除过滤条件
conditions = ["deleted_at is null"]

for key, value in queryParameters.items():
    if value is not None:
        # 根据值的类型处理引号,字符串类型需用单引号包裹
        if isinstance(value, str):
            condition = f"{key}='{value}'"
        else:
            condition = f"{key}={value}"
        conditions.append(condition)

# 用"and"连接所有条件,拼接成完整WHERE子句
where_clause = " and ".join(conditions)
# 生成完整SQL语句
sql_statement = f"select id from tff_party where {where_clause};"

print(sql_statement)

代码说明

  1. 使用items()遍历字典,同时获取键和值,避免重复查询字典
  2. 用列表收集所有条件,最后通过join方法拼接,避免出现多余的and
  3. 针对字符串类型的值添加单引号,确保SQL语法正确
  4. 预先加入固定条件deleted_at is null,符合需求中的查询规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:25:25