Корректная обработка исключений с подключением 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()
, но по ошибке) .... Это, кажется, источник всех моих других проблем!
заранее спасибо