Python遍历config.ini获取对应SQL查询报错的技术求助
问题描述
我想通过config.ini自身的配置值来遍历文件,实现新增机器项后Python能自动遍历并生成对应HTML文件的需求。
我的config.ini内容如下:
[Machine_List] List = Machine01,Machine02,Machine03 [SQL_Query] Machine01 = SELECT... Machine02 = SELECT... Machine03 = SELECT...
编写的Python代码片段:
Machine_List = config['Machine_List']['List'] for x in Machine_List.split(','): Query = config['SQL_Query'][x]
目标是在[Machine_List]的List中新增机器项,同时在[SQL_Query]中添加对应查询后,Python能自动遍历每一项,用生成的Query创建DataFrame并保存为独立HTML文件。但执行Query = config['SQL_Query'][x]时出现错误,其余代码都在for循环内。
解决方案
- 处理分割后的空格问题:
split(',')后每个机器名可能带有空格(比如配置里逗号后有空格),导致键名不匹配。可以去除每个元素的空白:for x in Machine_List.split(','): x = x.strip() # 去除前后空格、换行符等 Query = config['SQL_Query'][x] - 添加键存在性校验:避免新增机器项但忘记添加对应SQL查询时直接报错,可提前判断或捕获异常:
for x in Machine_List.split(','): x = x.strip() if x in config['SQL_Query']: Query = config['SQL_Query'][x] # 执行生成DataFrame和保存HTML的逻辑 else: print(f"警告:未找到机器{x}对应的SQL查询") - 完整可运行示例:结合
configparser模块的完整写法(确保已正确加载配置文件):import configparser # 加载配置文件 config = configparser.ConfigParser() config.read('config.ini') Machine_List = config['Machine_List']['List'] for x in Machine_List.split(','): x = x.strip() if not x: # 跳过空字符串(比如配置末尾多了逗号的情况) continue try: Query = config['SQL_Query'][x] # 示例:生成DataFrame并保存HTML # df = pd.read_sql_query(Query, your_db_connection) # df.to_html(f"{x}_report.html") print(f"已生成{x}的HTML报告") except KeyError: print(f"错误:机器{x}在[SQL_Query]中没有对应的查询语句")
内容的提问来源于stack exchange,提问作者Richard B
相关产品推荐
相关产品推荐

