Python: SQL
Теория: Контекстные менеджеры
Посмотрите на код ниже и попробуйте ответить на вопрос, что с ним не так?
Этот код написан из предположения, что вызов cursor.execute(sql) никогда не приведет к ошибке. А если приведет? Тогда возникнет исключение и метод cursor.close() никогда не будет вызван. Для обработки таких случаев можно использовать стандартный синтаксис try-except
Теперь, если возникнет любая ошибка, то курсор правильно закроется. В теории это выглядит нормально, но на практике, об этом сложно постоянно помнить и программисты регулярно забывают добавлять блок finally. Да и весь синтаксис выглядит громоздким. Потому создатели библиотеки добавили синтаксис контекстных менеджеров для объектов соединения и курсора:
Важное замечание, что несмотря на то, что привычные вам контекстные менеджеры освобождают ресурсы после выхода из блока with, здесь соединение не закрывается. И потому важно закрыть его принудительно самим.
Рекомендуемые программы
Завершено
0 / 7

