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

如何从SQL查询字符串中提取指定字段值并转为字典

提取SQL字符串中指定字段的值

给定SQL语句字符串:

msg = "INSERT INTO hires (id, hire_ts, user, hired_by) VALUES ('12341234-1234-1234-1234-123412341234'::uuid::UUID,  '2023-01-01T10:00:00.000000'::timestamp, 'doh', 'jason')"

已通过正则提取出字段列表和值列表的字符串:

import re
pattern = r"\(([^\)]+)\)"
re_msg = re.findall(pattern, msg)
# re_msg结果:
# ['id, hire_ts, user, hired_by', "'12341234-1234-1234-1234-123412341234'::uuid::UUID,  '2023-01-01T10:00:00.000000'::timestamp, 'doh', 'jason'"]

要将其转换为只包含user和hired_by的目标字典:

dict_msg = {
    "user": "doh",
    "hired_by": "jason"
}

实现步骤

  • 第一步:拆分字段名和值为对应列表
    把re_msg中的两个字符串分别按逗号拆分,同时清理每个元素的前后空格:

    # 拆分字段名列表
    fields = [field.strip() for field in re_msg[0].split(',')]
    # 拆分值列表
    values = [val.strip() for val in re_msg[1].split(',')]
    
  • 第二步:清洗值内容
    去掉值字符串中的单引号,以及PostgreSQL的类型转换后缀(比如::uuid::UUID、::timestamp):

    cleaned_values = []
    for val in values:
        # 先去掉首尾单引号
        val = val.strip("'")
        # 去掉::开头的类型转换部分
        if '::' in val:
            val = val.split('::')[0]
        cleaned_values.append(val)
    
  • 第三步:构建完整字典并筛选目标字段
    先把字段和清洗后的值配对成完整字典,再提取需要的键:

    full_dict = dict(zip(fields, cleaned_values))
    # 筛选出需要的字段
    dict_msg = {key: full_dict[key] for key in ['user', 'hired_by']}
    

完整代码

import re

msg = "INSERT INTO hires (id, hire_ts, user, hired_by) VALUES ('12341234-1234-1234-1234-123412341234'::uuid::UUID,  '2023-01-01T10:00:00.000000'::timestamp, 'doh', 'jason')"
pattern = r"\(([^\)]+)\)"
re_msg = re.findall(pattern, msg)

# 拆分并清理字段和值
fields = [f.strip() for f in re_msg[0].split(',')]
values = [v.strip() for v in re_msg[1].split(',')]

# 清洗值
cleaned_values = []
for val in values:
    val = val.strip("'")
    if '::' in val:
        val = val.split('::')[0]
    cleaned_values.append(val)

# 构建目标字典
full_dict = dict(zip(fields, cleaned_values))
dict_msg = {k: full_dict[k] for k in ['user', 'hired_by']}

print(dict_msg)
# 输出: {'user': 'doh', 'hired_by': 'jason'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:24:51