Правильный способ закрыть базу данных sqlite3, завернутый в менеджер контекста класса Python? - PullRequest
0 голосов
/ 11 мая 2019

Я оборачиваю базу данных sqlite3 в класс менеджера контекста Python, но мне интересно, как правильно обрабатывать / закрывать базу данных в методе exit ?

Я добавил тест, чтобы проверить, имеет ли self.conn значение true, и commit () в методе exit (), но это необходимо или полезно? Я не уверен, что фиксация в случае ошибки одного из методов будет хорошей идеей?

class TweetedDB():

    def __init__(self, db_filename='tweeted.db'):
        self.db_filename = db_filename


    def __enter__(self):
        ''' Run when called as context manager. '''
        self._connect()
        self._create_table()
        return self


    def __exit__(self, exception_type, exception_value, traceback):
        if self.conn:
            self.conn.commit()
            self.conn.close()
...