如何用Python将大量Tuple列表格式的SQLResult转为易读自然语言输出
Python实现SQL查询结果转自然语言有序列表方案
核心思路
根据查询需求的描述,结合结果元组对应的字段名称,遍历查询结果动态生成结构化的有序列表,让输出更符合自然语言阅读习惯。
基础实现代码
def sql_result_to_natural_language(query_desc, field_names, sql_result): # 生成开头说明文本 result_content = f"{query_desc}如下:\n\n" # 遍历结果生成有序列表项 for index, record in enumerate(sql_result, start=1): # 拼接每个字段的描述与值 record_text = "、".join([f"{field_names[i]}:{val}" for i, val in enumerate(record)]) result_content += f"{index}. {record_text}\n" return result_content # 示例调用 query_requirement = "提供门店列表及总销售额" field_labels = ["门店名称", "总销售额"] sql_result = [('Adyar', 36283), ('Agra', 31892), ('Delhi', 42500)] # 生成并打印结果 output_text = sql_result_to_natural_language(query_requirement, field_labels, sql_result) print(output_text)
示例输出
提供门店列表及总销售额如下:
- 门店名称:Adyar、总销售额:36283
- 门店名称:Agra、总销售额:31892
- 门店名称:Delhi、总销售额:42500
扩展优化:格式化特殊字段
如果结果中包含金额、日期等需要特殊格式化的字段,可以在函数中增加针对性处理,让输出更直观:
def sql_result_to_natural_language(query_desc, field_names, sql_result, currency_indices=None): currency_indices = currency_indices or [] result_content = f"{query_desc}如下:\n\n" for index, record in enumerate(sql_result, start=1): record_parts = [] for i, val in enumerate(record): # 对指定索引的字段做金额格式化 if i in currency_indices: record_parts.append(f"{field_names[i]}:¥{val:,}") else: record_parts.append(f"{field_names[i]}:{val}") record_text = "、".join(record_parts) result_content += f"{index}. {record_text}\n" return result_content # 调用示例(格式化第二个字段为金额) output_text = sql_result_to_natural_language(query_requirement, field_labels, sql_result, currency_indices=[1]) print(output_text)
优化后输出
提供门店列表及总销售额如下:
- 门店名称:Adyar、总销售额:¥36,283
- 门店名称:Agra、总销售额:¥31,892
- 门店名称:Delhi、总销售额:¥42,500
内容的提问来源于stack exchange,提问作者Brijesh Savaliya
相关产品推荐
相关产品推荐

