Context Manager in Python

Rumman Ansari   Software Engineer   2023-02-07   256 Share
☰ Table of Contents

Table of Content:


  • Context Manager allows a programmer to perform required activities, automatically, while entering or exiting a Context.

  • For example, opening a file, doing few file operations, and closing the file is manged using Context Manager as shown below.

with open('sample.txt', 'w') as fp:

    content = fp.read()

  • The keyword with is used in Python to enable a context manager. It automatically takes care of closing the file.

  • Consider the following example, which tries to establish a connection to a database, perform few db operations and finally close the connection.

Example 1

import sqlite3
try:
    dbConnection = sqlite3.connect('TEST.db')
    cursor = dbConnection.cursor()
    '''
    Few db operations
    ...
    '''
except Exception:
    print('No Connection.')
finally:
    dbConnection.close()

Example 2

import sqlite3
class DbConnect(object):
    def __init__(self, dbname):
        self.dbname = dbname
    def __enter__(self):
        self.dbConnection = sqlite3.connect(self.dbname)
        return self.dbConnection
    def __exit__(self, exc_type, exc_val, exc_tb):
        self.dbConnection.close()
with DbConnect('TEST.db') as db:
    cursor = db.cursor()
    '''
   Few db operations
   ...
    '''