如何从 PYODBC 返回错误



我正在与SQL Server建立连接以执行存储过程。 "轮询"服务器以确定存储过程是成功完成运行还是在 SP 花费超过 60 秒/3600 秒等时返回错误的正确方法是什么?

import pyodbc
cnxn = pyodbc.connect('DRIVER={SQL Server}; SERVER=ServerName; PORT=1433;DATABASE=dbname;UID=%s;PWD=%s'  % (username, password))
cnxn.execute("EXECUTE msdb.dbo.sp_start_job 'TestSP'")
<pyodbc.Cursor object at 0x0000000002D6DDB0>

如何确定 SP 的状态?

考虑将

execute包装在 try/except 中以捕获异常(包含错误)。如果未引发错误,则假定execute运行正常。此外,请使用超时变量(以秒为单位),因为如果发生超时,数据库应引发OperationError

cnxn = pyodbc.connect('DRIVER={SQL Server}; SERVER=ServerName; PORT=1433; 
                       DATABASE=dbname;UID={0};PWD={1}'.format(username, password))
cnxn.timeout = 60    
cursor = cnxn.cursor()
try:
    cnxn.execute("EXECUTE msdb.dbo.sp_start_job 'TestSP'")
except Exception as e:
    print(e)

看起来您已经跳过了制作光标,因此您需要这样做,然后获取结果。试试这个:

import pyodbc
connection = pyodbc.connect('DRIVER={SQL Server}; SERVER=ServerName; PORT=1433;DATABASE=dbname;UID=%s;PWD=%s'  % (username, password))
cursor = connection.cursor()
cursor.execute("EXECUTE msdb.dbo.sp_start_job 'TestSP'")
rows = cursor.fetchall()
for row in rows:
    # Do stuff
    print(row)

相关内容

  • 没有找到相关文章

最新更新