Время от времени я выполняю необработанные запросы, используя connection.cursor() вместо использования ORM (так как это определенно не серебряная пуля).
Я заметил, что в нескольких местах я не называю явным cursor.close() после того, как я закончил работу с базой данных. Пока это не приводит к ошибкам или проблемам с производительностью. Мне интересно, какие проблемы я мог бы иметь, не закрывая курсор явно, что может пойти не так?
Насколько я понимаю, connection и cursor в Django следуют "Спецификации API базы данных Python v2.0" (PEP-249). И, согласно ему, cursor будет автоматически закрываться всякий раз, когда вызывается метод __del__(). Я думаю, вопрос может быть также: есть ли прецедент, когда он не называется?
FYI, я использую Python 2.7 и Django 1.6.5.