数据库连接失败或未找到指定数据时如何写入对应错误文件?
给Python脚本添加故障安全机制的解决方案
没问题!我帮你把这两个故障安全逻辑整合到脚本里,主要通过异常捕获和结果校验来实现。下面是修改后的完整脚本,我加了详细注释方便你理解:
#! /usr/bin/python import pymssql import sys from datetime import datetime # 引入时间模块,方便记录错误发生时间 sys.path.insert(0, '/opt/mount/safe') from secrets import password def write_error_file(file_name, error_msg): """通用的错误写入函数,避免重复代码""" with open(file_name, 'a') as f: # 加上时间戳,便于排查问题 timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") f.write(f"[{timestamp}] {error_msg}\n") try: # 尝试连接数据库(替换成你的实际连接参数) conn = pymssql.connect( server='你的数据库服务器地址', user='数据库用户名', password=password, database='目标数据库名' ) # 执行查询Michael的语句(替换成你的实际表和字段) cursor = conn.cursor() cursor.execute("SELECT * FROM 你的表名 WHERE name = 'Michael'") results = cursor.fetchall() # 检查是否找到Michael if not results: error_msg = "未找到用户Michael" write_error_file("ERROR", error_msg) print(error_msg) # 可选:控制台同步输出提示 # 清理数据库资源 cursor.close() conn.close() except pymssql.Error as e: # 捕获所有数据库连接/操作异常 error_msg = f"数据库连接失败: {str(e)}" write_error_file("CONNECTION_ERROR", error_msg) print(error_msg) sys.exit(1) # 异常退出脚本 except Exception as e: # 捕获其他未知异常(可选,按需调整) error_msg = f"发生未知错误: {str(e)}" write_error_file("ERROR", error_msg) print(error_msg) sys.exit(1)
关键逻辑说明:
- 数据库连接异常处理:用
try-except块包裹数据库操作全流程,专门捕获pymssql.Error(pymssql库所有数据库相关异常的基类),一旦连接失败就把带时间戳的错误信息写入CONNECTION_ERROR文件,直接退出脚本避免后续无效操作。 - Michael未找到的校验:查询完成后通过
if not results判断结果集是否为空,为空则触发ERROR文件写入,同时控制台输出提示。 - 通用错误写入函数:封装了文件写入逻辑,自动添加时间戳,方便后续排查问题时定位错误发生的时间点。
- 资源清理:确保游标和数据库连接被正确关闭,避免资源泄漏。
你只需要把脚本里的服务器地址、用户名、数据库名、表名这些占位符替换成你的实际信息就可以直接使用啦!
内容的提问来源于stack exchange,提问作者user9576045
相关产品推荐
相关产品推荐

