Обновить

Комментарии 3

Довольно информативно и полезно, хорошая фича питона. Спасибо за статью.

Нужно ли закрывать соединение SQLite?
Там ещё есть нюанс, with cursor автокоммит не делает, только with connection. Пришёл к такому варианту, но не уверен, что он правильный.

def run(self, sql: str, **kwargs) -> Sequence:
    """Mimic pg8000 native API."""
    con = sqlite3.connect(self.dbfile, detect_types=sqlite3.PARSE_DECLTYPES)
    con.row_factory = sqlite3.Row
    try:
        # Context manager for autocommit/rollback
        with con:
            return con.execute(sql, kwargs).fetchall()
    except sqlite3.Error as e:
        logger.exception(e)
        raise
    finally:
        con.close()

Казалось бы, всё что требует conn надо перенесть в with c sqlite3.connect(...) as conn:, и убрать finally

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации