简体   繁体   English

如何在python中为mysql连接执行异常处理

[英]How to do Exception handling for mysql connection in python

I'm new to python , I want to know how to do exception handling in python in a proper way.I want to raise an exception for failure of db connection.I also don't want to include all the lines of code in try block.I want to raise connection failure exception.How to do this? 我是python的新手,我想知道如何以适当的方式在python中进行异常处理。我想为db连接失败引发异常。我也不想在try中包含所有代码行我想引发连接失败异常。该怎么办?

try:
    conn = MySQLdb.connect(host="mysql", user="root", passwd="password"
                           , db="database")
    mycursor = conn.cursor()
    query = "INSERT INTO table1(col1,col2,col3)VALUES(%s,%s,%s)"
    val = (x,y,z)
    mycursor.execute(query, val)
    conn.commit()
    conn.close()
    print("Data inserted to db")
except Exception as ex:
    print(ex)
    conn = MySQLdb.connect(host="mysql", user="root", passwd="password"
                           , db="database")
    mycursor = conn.cursor()
    query = "INSERT INTO table1(col1,col2,col3)VALUES(%s,%s,%s)"  
    try:
        mycursor.execute(query, val)
    except MySQLdb.Error, e:
        try:
            print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
            return None
        except IndexError:
            print "MySQL Error: %s" % str(e)
            return None
    except TypeError, e:
        print(e)
        return None
    except ValueError, e:
        print(e)
        return None
    finally:
        mycursor.close()
        conn.close()

Something like: 就像是:

connected = False
try:
    conn = MySQLdb.connect(host="mysql", user="root", passwd="password"
                           , db="database")
    connected  = True
except MySQLError as ex:
    print(ex)
if connected:
    mycursor = conn.cursor()
    query = "INSERT INTO table1(col1,col2,col3)VALUES(%s,%s,%s)"
    val = (x,y,z)
    mycursor.execute(query, val)
    conn.commit()
    conn.close()
    print("Data inserted to db")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM