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

如何使用PyODBC获取SQL Server中RAISERROR或PRINT的输出消息

PyODBC获取SQL Server RAISERROR实时消息调整方案

你需要主动读取PyODBC连接对象存储的SQL Server通知消息,再按需要的格式输出即可,调整后的代码如下:

import pyodbc

conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=ECH-DWPROD02;DATABASE=Test;Trusted_Connection=yes;')
# 可选:开启自动提交避免事务缓冲导致消息延迟,按需开启即可
# conn.autocommit = True
cursor = conn.cursor()

# 执行前清空历史消息避免干扰
conn.messages = []
cursor.execute("SET NOCOUNT ON; RAISERROR('Test Message',0,1) WITH NOWAIT; select 1 as col1")

# 优先输出所有通知消息
for msg in conn.messages:
    # 消息元组第二个元素为RAISERROR输出的文本,去除首尾空白后按要求加星号强调
    print(f"*{msg[1].strip()}*")

# 再输出结果集格式化内容
rows = cursor.fetchall()
print("|col1|")
print("|:-|")
for row in rows:
    print(f"|{row[0]}|")

核心逻辑说明

  • 低严重级别(0~10)的RAISERROR消息会被SQL Server识别为通知,配合WITH NOWAIT参数会立即发送给客户端,不会等待整个查询执行完成
  • PyODBC会将所有收到的通知消息按顺序存储在连接对象的messages属性中,每个消息为(错误码, 消息文本)的元组结构
  • 必须在读取结果集之前先遍历messages属性,才能实现消息先输出的效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:30:00