170 похожих чатов

Возвращаясь SQLite. Читаю цитата. В sqlite3 with используется только для работы

с транзакциями.

И хотя соединение тоже можно открывать в блоке with (файл with_sqlite_conn.py):

import sqlite3

with sqlite3.connect('dhcp_snooping.db') as conn:
for row in conn.execute('select * from dhcp'):
print(row)

На самом деле, после этого блока соединение не закрыто.

Поэтому лучше не открывать соединение таким образом, так как создается впечатление, что оно будет автоматически закрыто.

Но, можно создать свой менеджер контекста, который будет закрывать соединение:

import contextlib
import sqlite3

@contextlib.contextmanager
def sqlite3_connection(db_name):
connection = sqlite3.connect(db_name)
yield connection
connection.close()


Вопрос. Все таки, как лучше открывать и закрывать соединения?
И нужен ли контекстный менеджер?

3 ответов

21 просмотр

> На самом деле, после этого блока соединение не закрыто. Поэтому лучше не открывать соединение таким образом, так как создается впечатление, что оно будет автоматически закрыто С чего это решил что соединение не закрыто?

Так with начинает и завершает транзакцию, а не открывает и закрывает соединение

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта