Python не автоматически закрывает соединение с sqlite3 после выхода из оператора With? ⇐ Python

Программы на Python
Anonymous
Python не автоматически закрывает соединение с sqlite3 после выхода из оператора With?

Сообщение Anonymous »

Вот фрагмент кода, работающий на Python 3.10.5 -

Код: Выделить всё

with sqlite3.connect("test.db") as db:
cursor = db.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS testtable(id integer PRIMARY KEY, name text);""")
cursor.execute("""INSERT INTO testtable(id, name) VALUES (1, "XYZ")""")
db.commit()

cursor.execute("select * from testtable")
for x in cursor.fetchall():
print(x)
Теперь, согласно моему пониманию того, как работает оператор With, соединение с базой данных будет автоматически закрыто в конце блока кода, без необходимости явного вызова db.close( ), аналогично тому, как обрабатываются операции файлового ввода-вывода. Это будет означать, что следующий курсор.execute() завершится неудачно, поскольку он находится за пределами оператора и, следовательно, недействителен.
Однако он все равно выполняется! Я могу видеть содержимое таблицы. Что здесь происходит?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -with-stat

Вернуться в «Python»