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

如何在Python中执行SQL查询并生成指定格式的文本文件

解决办法

你已经搞定了SQL查询和数据获取,只是结果格式不对而已——别担心,咱们几步就能把它转成你要的每行一条|分隔字符串的格式,还能保存成txt文件。

第一步:从结果字典里提取目标字符串

你拿到的res1是个包含字典的列表,每个字典里只有一对键值:键是你写的那个完整的SQL聚合函数,值就是咱们需要的|分隔字符串。用列表推导式就能快速把所有值捞出来:

# 把res1里每个字典的值提取出来,存成新列表
target_strings = [list(dict_item.values())[0] for dict_item in res1]

这里用list(dict_item.values())[0]是因为每个字典只有一个值,转成列表后取第一个元素就是咱们要的内容。

第二步:把字符串写入txt文件

接下来就是把这些字符串每行一条写入文件啦,两种方式都可以:

方式一:逐行写入

# 打开文件,指定utf-8编码避免乱码
with open('result.txt', 'w', encoding='utf-8') as txt_file:
    for line in target_strings:
        txt_file.write(line + '\n')

方式二:一次性写入(更高效)

with open('result.txt', 'w', encoding='utf-8') as txt_file:
    # 用换行符把所有字符串连起来,一次性写入
    txt_file.write('\n'.join(target_strings))

整合后的完整代码

把这些步骤加到你原来的代码里,完整版本就是这样:

with db.cursor() as cur:
    query_meta1 = ("SELECT trim(CONCAT_WS('|',mtd.Master_Job_Name,Seq,Table_Name,Source_File_Name_Lnd,landingdfname,Target_Path,query,mtd.Execution_Sequence )) from imedical_master_metadata mtd inner join imedical_master_metadata_query mtq on (mtd.Master_Job_Name=mtq.Master_Job_Name) where mtd.Is_Active='Y' order by mtd.Execution_Sequence")
    cur.execute(query_meta1)
    res1 = cur.fetchall()

# 提取需要的|分隔字符串
target_strings = [list(dict_item.values())[0] for dict_item in res1]

# 写入txt文件
with open('result.txt', 'w', encoding='utf-8') as txt_file:
    txt_file.write('\n'.join(target_strings))

小提示

如果哪天你的数据库驱动返回的是元组列表(而不是字典),那提取会更简单:target_strings = [item[0] for item in res1],不过根据你的描述,现在用字典的提取方式就完全没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:05:05