Корректная обработка исключений с подключением Python MySQLdb

Я создал небольшой / простой скрипт на python для вставки данных в базу данных MySQL. Я включил некоторую обработку ошибок - главным образом, чтобы закрыть соединение и / или предотвратить зависание соединения в случае ошибки (... но также игнорировать некоторые ошибки).

Я думал, что то, что у меня было (см. Ниже), было правильным - казалось, все работает хорошо. Но иногда я получаю ошибки «Слишком много подключений», что, как я предполагаю, означает, что я на самом деле не закрываю соединение вообще (или, возможно, обработка ошибок не верна).

conn=MySQLdb.connect(host=####, user=####, passwd=####, db=####)
curs=conn.cursor()
try:
    curs.execute(sql)
    conn.commit()           

except MySQLdb.Error as e:
    if e[0]!= ###:
        raise

finally: 
    curs.close()    
    conn.close()

(Я тоже пробовал безfinally:)

Другим (я считаю важным) моментом является то, что база данных MySQL использует механизм хранения InnoDB. Это первый раз, когда я использую движок InnoDB, и, возможно, есть некоторые отличия от MyISAM, которые актуальны здесь, о которых я не знаю (например,conn.commit(), но по ошибке) .... Это, кажется, источник всех моих других проблем!

заранее спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос