Я оборачиваю базу данных 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()