有人可以一步一步解释下面的堆栈跟踪吗?

时间:2015-12-16 17:35:17

标签: python sql-server pyodbc pypyodbc

有人可以一步一步解释下面的堆栈跟踪吗? 我想找出错误的根本原因是什么以及错误源自何处。

追踪(最近一次呼叫最后一次):

1.   File "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensio ns\Microsoft\Python Tools for Visual Studio\2.1\visualstudio_py_util.py", line 1 06, in exec_file
    exec_code(code, file, global_variables)

2.   File "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensio ns\Microsoft\Python Tools for Visual Studio\2.1\visualstudio_py_util.py", line 8 2, in exec_code
    exec(code_obj, global_variables)

3.  File "C:\Users\ssr\FindAllCandidatePathsOfTrain.py", line 332, in <module>
    main()

4.      File "C:\Users\ssr\FindAllCandidatePathsOfTrain.py", line 296, in main
    stanoxDetails = checkTheLineHasStanox(lastLineSegment)

5.      File "C:\Users\ssr\FindAllCandidatePathsOfTrain.py", line 205, in checkTheLineHasStanox
    firstrow= query(queryStr, 'GetOne')

6.      File "C:\Users\ssr\FindAllCandidatePathsOfTrain.py", line 45, in query
    connection.close()

7.      File "C:\Python34\lib\site-packages\pypyodbc.py", line 2658, in close
    self.rollback()

8.      File "C:\Python34\lib\site-packages\pypyodbc.py", line 2581, in rollback
    check_success(self, ret)

9.      File "C:\Python34\lib\site-packages\pypyodbc.py", line 988, in check_success
    ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi)

10.      File "C:\Python34\lib\site-packages\pypyodbc.py", line 966, in ctrl_err
    raise DatabaseError(state,err_text) pypyodbc.DatabaseError: ('08S01', '[08S01] [Microsoft][ODBC SQL Server Driver]Co mmunication
link failure') 
Press any key to continue . . .

2 个答案:

答案 0 :(得分:2)

Python Traceback将显示错误发生前正在执行的内容以及错误输入的行。

在这种情况下,您的模块在此行引发了错误:

File "C:\Python34\lib\site-packages\pypyodbc.py", line 966, in ctrl_err
raise DatabaseError(state,err_text)

错误文本显示在这里:

pypyodbc.DatabaseError: ('08S01', '[08S01] [Microsoft][ODBC SQL Server Driver]Communication link failure')

答案 1 :(得分:2)

如上所述,回溯显示错误发生前执行的代码行和错误本身。在这种情况下,Python并不是导致错误的直接原因。

考虑:

10.      File "C:\Python34\lib\site-packages\pypyodbc.py", line 966, in ctrl_err
raise DatabaseError(state,err_text) pypyodbc.DatabaseError: ('08S01', '[08S01] [Microsoft][ODBC SQL Server Driver]Communication link failure')

这表明Python中的这个错误是一个&#34;传递&#34;错误。被调用的数据库驱动程序实际上是导致错误的原因,Python只是通过Python传递它。祝你好运。