Connection .__ exit__ закрывает себя в sqlite3? - PullRequest
0 голосов
/ 20 октября 2019

Я использую для открытия соединений SQL с помощью операторов with, например,

with sqlite3.connect('data.db') as con:
    # do something here

Я предполагал, что соединение закрывается при выходе из блока with, как это делают файлы, но теперьУ меня есть некоторые сомнения по этому поводу. Я просмотрел документацию Класс соединения , но не нашел никакой подсказки. Кто-нибудь знает наверняка, что именно делает Connection.__exit__? Заранее спасибо!

1 Ответ

1 голос
/ 20 октября 2019

Нет, не закрывает соединение :

# Connection object used as context manager only commits or rollbacks transactions,
# so the connection object should be closed manually
con.close()

Использование соединения в качестве диспетчера контекста приведет к фиксации или откату.

Если вы хотитедля автоматического закрытия также можно использовать менеджер контекста contextlib.closing:

from contextlib import closing

with closing(sqlite3.connect('data.db')) as con:
    with con:
        # do something here

Вам нужен второй with.

...