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