【发布时间】:2018-07-14 14:43:16
【问题描述】:
我正在使用 PyMSSQL 连接到数据库。但是,如果我输入了错误的详细信息或有其他问题,PyMSSQL 会引发异常。但是,我无法弄清楚如何捕获异常。我已经使用了我能想到的所有变体,但我似乎无法以优雅的方式捕捉到异常。
我的连接代码是:
import pymssql
import getpass
tempServer = input("Enter host: ")
tempUser = input("Enter user: ")
tempPwd = getpass.getpass("Enter password: ")
try:
phjTempConnection = pymssql.connect(server = tempServer,
user = tempUser,
password = tempPwd,
port = '1433')
except pymssql.MSSQLDatabaseException:
print("ERROR")
如果我在输入字段中输入废话,我会得到以下输出:
---------------------------------------------------------------------------
MSSQLDatabaseException Traceback (most recent call last)
pymssql.pyx in pymssql.connect (pymssql.c:10734)()
_mssql.pyx in _mssql.connect (_mssql.c:21821)()
_mssql.pyx in _mssql.MSSQLConnection.__init__ (_mssql.c:6581)()
_mssql.pyx in _mssql.maybe_raise_MSSQLDatabaseException (_mssql.c:17524)()
MSSQLDatabaseException: (18456, b'Unknown error')
During handling of the above exception, another exception occurred:
OperationalError Traceback (most recent call last)
<ipython-input-21-22d7fd0e3d05> in <module>()
11 password = tempPwd,
---> 12 port = '1433')
13 except pymssql.MSSQLDatabaseException:
pymssql.pyx in pymssql.connect (pymssql.c:10824)()
OperationalError: (18456, b'Unknown error')
During handling of the above exception, another exception occurred:
AttributeError Traceback (most recent call last)
<ipython-input-21-22d7fd0e3d05> in <module>()
11 password = tempPwd,
12 port = '1433')
---> 13 except pymssql.MSSQLDatabaseException:
14 print("ERROR")
AttributeError: 'module' object has no attribute 'MSSQLDatabaseException'
我原以为输出会提供足够的信息来解决如何捕获 MSSQLDatabaseException 异常,但我尝试了各种变体,但都没有成功。
如何使用输出来确定如何捕获引发的异常?
【问题讨论】:
标签: sql-server python-3.x exception-handling pymssql