关闭包裹在Python类上下文管理器中的sqlite3数据库的正确方法?

时间:2019-05-11 09:56:31

标签: python database sqlite contextmanager

我将sqlite3数据库包装在Python上下文管理器类中,但想知道用 exit 方法错误处理/关闭数据库的正确方法是什么?

我添加了一个测试以查看self.conn是否为true,并在 exit ()方法中添加了commit(),但这是必要的还是好的做法?我不确定在其中一种方法出错的情况下进行提交是否是个好主意?

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()

0 个答案:

没有答案