此异常是
errors
模块中所有其他异常的基类。它可用于捕获单个except
语句中的所有错误。
以下示例显示了我们如何捕获语法错误:
import mysql.connector
try:
cnx = mysql.connector.connect(user='scott', database='employees')
cursor = cnx.cursor()
cursor.execute("SELECT * FORM employees") # Syntax error in query
cnx.close()
except mysql.connector.Error as err:
print("Something went wrong: {}".format(err))
初始化异常支持一些可选参数,即msg
、errno
和
。它们都是可选的,默认为.
Connector/Python 在内部使用它来引发 MySQL 客户端和服务器错误,您的应用程序不应使用它来引发异常。
values
sqlstate
None
errors.Error
以下示例显示了不使用参数或使用参数组合时的结果:
>>> from mysql.connector.errors import Error
>>> str(Error())
'Unknown error'
>>> str(Error("Oops! There was an error."))
'Oops! There was an error.'
>>> str(Error(errno=2006))
'2006: MySQL server has gone away'
>>> str(Error(errno=2002, values=('/tmp/mysql.sock', 2)))
"2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"
>>> str(Error(errno=1146, sqlstate='42S02', msg="Table 'test.spam' doesn't exist"))
"1146 (42S02): Table 'test.spam' doesn't exist"
当连接器/Python 从 MySQL 服务器接收到错误数据包时,使用错误号 1146 的示例。如图所示,信息被解析并传递给Error
异常。
每个异常子类Error
都可以使用前面提到的参数进行初始化。此外,
每个实例都有属性
errno
,可以在您的代码中使用。
msg
sqlstate
以下示例显示了删除不存在的表时如何处理错误(当DROP
TABLE
语句不包含IF
EXISTS
子句时):
import mysql.connector
from mysql.connector import errorcode
cnx = mysql.connector.connect(user='scott', database='test')
cursor = cnx.cursor()
try:
cursor.execute("DROP TABLE spam")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_BAD_TABLE_ERROR:
print("Creating table spam")
else:
raise
在 Connector/Python 1.1.1 之前,传递给的原始消息
errors.Error()
不会以可以检索的方式保存。相反,该
Error.msg
属性使用错误号和 SQLSTATE 值进行格式化。从 1.1.1 开始,只有原始消息保存在Error.msg
属性中。可以通过打印或获取错误对象的字符串表示形式来获取格式化值以及错误号和 SQLSTATE 值。例子:
try:
conn = mysql.connector.connect(database = "baddb")
except mysql.connector.Error as e:
print "Error code:", e.errno # error number
print "SQLSTATE value:", e.sqlstate # SQLSTATE value
print "Error message:", e.msg # error message
print "Error:", e # errno, sqlstate, msg values
s = str(e)
print "Error:", s # errno, sqlstate, msg values
errors.Error
是 Python 的子类
StandardError
。