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

数据库连接失败或未找到指定数据时如何写入对应错误文件?

给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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:20:44