如何 return 来自 PYODBC 的错误
How to return errors from PYODBC
我正在连接到 SQL Server
以执行存储过程。如果 SP 花费的时间超过 60 秒/3600 秒等,'poll' 服务器确定存储过程是否成功完成或返回错误的正确方法是什么?
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 的状态?
您似乎跳过了制作游标,因此您需要制作游标,然后获取结果。试试这个:
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)
考虑将 execute
包装在 try/except 中以捕获异常(encompass errors). If no error is raised, execute
is assumed to run correctly. Also, use the 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)
我正在连接到 SQL Server
以执行存储过程。如果 SP 花费的时间超过 60 秒/3600 秒等,'poll' 服务器确定存储过程是否成功完成或返回错误的正确方法是什么?
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 的状态?
您似乎跳过了制作游标,因此您需要制作游标,然后获取结果。试试这个:
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)
考虑将 execute
包装在 try/except 中以捕获异常(encompass errors). If no error is raised, execute
is assumed to run correctly. Also, use the 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)