我查了下面的密码
import pyodbc
try:
pyodbc.connect('DRIVER={%s};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s' % (driver, server, database, uid, password))
except pyodbc.Error, err:
logging.warn(err)
我得到的错误消息格式是
('HY000', "[HY000] [MySQL][ODBC 5.1 Driver]Access denied for user 'root'@'192.168.2.27' (using password: YES) (1045) (SQLDriverConnect)")
我只想接收错误的消息部分,即
Access denied for user 'root'@'192.168.2.27'(using password: YES)
我不知道我是否能抓住错误,特别是,司机找不到,主机关闭等。。
我还尝试捕捉错误:
except pyodbc.OperationalError, err:
logging.warn(err)
except pyodbc.DataError, err:
logging.warn(err)
except pyodbc.IntegrityError, err:
logging.warn(err)
except pyodbc.ProgrammingError, err:
logging.warn(err)
except pyodbc.NotSupportedError, err:
logging.warn(err)
except pyodbc.DatabaseError, err:
logging.warn(err)
except pyodbc.Error, err:
logging.warn(err)
但最后一个总是会发现错误。
我看到pyodbc.Error.message总是空的。 我怎么能只得到错误中的信息。
谢谢
在pyodbc 3.0.7中,捕获pyodbc.ProgrammingError(可能还有其他错误类型,尽管我还没有尝试过)工作得很好。不过,错误的内容仍然有点晦涩,因此可能很难对错误进行更细粒度的处理。
这对我有效。
有不同的SQLSTATES,您可以使用if-else语句来打印原因。
同样地
会给你第二部分错误的描述。 例如
ex.args[0]
给你28000
,ex.args[1]
给你[28000] LDAP authentication failed for user 'user' (24) (SQLDriverConnect)
然后,您可以在那里使用字符串操作技术来打印出您想要的内容。希望这有帮助。
pyodbc似乎只是包装底层ODBC实现中的错误/异常,因此您不太可能做到这一点。
相关问题 更多 >
编程相关推荐