Я делаю что-то вроде этого...
conn = sqlite3.connect(db_filename)
with conn:
cur = conn.cursor()
cur.execute( ... )
with
автоматически фиксирует изменения. Но документы ничего не говорят о закрытии соединения.
На самом деле я могу использовать conn
в последующих утверждениях (которые я проверял). Следовательно, кажется, что менеджер контекста не закрывает соединение.
Нужно ли вручную закрывать соединение. Что если я оставлю это открытым?
EDIT
Мои выводы:
- Соединение не закрыто в менеджере контекста, я проверил и подтвердил это. После
__exit__
менеджер контекста фиксирует изменения, выполняяconn.commit()
with conn
иwith sqlite3.connect(db_filename) as conn
одинаковы, поэтому использование любого из них сохранит соединение- Оператор
with
не создает новую область видимости, поэтому все переменные, созданные в наборе with, будут доступны вне его - Наконец, вы должны закрыть соединение вручную