Zac*_*ack 5 python error-handling
我正在写一个函数,可以向我的数据库添加一个新表。我遇到的问题是表已经存在时出现错误消息:
pymysql.err.InternalError: (1050, "Table 'doesthiswork' already exists")
Run Code Online (Sandbox Code Playgroud)
因此,我在代码中添加了一个except,该代码可以正常工作,但它排除了所有内部错误。除了我假定的特定错误不是1050而不是内部错误之外,如何获取代码?
import pymysql
def CreateTable(Host,User,Password,DataBase,TableName):
try:
conn = pymysql.connect(
host = Host,
user = User,
password= Password,
db = DataBase
)
a = conn.cursor()
tblName = TableName
sql = 'CREATE TABLE'+" "+ tblName + '(try varchar(128));'
a.execute(sql)
except pymysql.err.InternalError:
print (tblName + " " + 'already exist')
Run Code Online (Sandbox Code Playgroud)
上面的代码可以工作,但是如前所述,如果出现了其他类型的内部错误,则仅会因为表已经存在而不是实际错误本身而已。
将异常分配给变量并测试特定的错误代码,例如:
except pymysql.err.InternalError as e:
code, msg = e.args
if code == 1050:
print(tblName, 'already exists')
Run Code Online (Sandbox Code Playgroud)
虽然你可能只是print(msg)
。