如何从PYODBC返回错误

时间:2016-04-28 19:45:32

标签: python pyodbc

我正在与BoundView = new ObservableCollection<CustomJoinObject>(/*LINQ QUERY*/);建立连接以执行存储过程。什么是正确的民意调查方式?服务器确定存储过程是否成功运行,或者如果SP花费的时间超过60秒/ 3600秒,则返回错误等等?

SQL Server

如何确定SP的状态?

2 个答案:

答案 0 :(得分:6)

考虑将execute包装在try / except中以捕获异常(encompass errors)。如果未引发错误,则假定execute正确运行。此外,使用timeout variable(以秒为单位),因为如果发生超时,数据库应该引发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)

答案 1 :(得分:1)

看起来你已经跳过制作光标,所以你需要这样做,然后获取结果。试试这个:

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)