In this tutorial, you will learn everything about Context Manager in Python with the help of examples like how to create Python context managers and how to use them with the help of proper examples.
Headings of Contents
- 1 Introduction of Context Manager in Python
- 2 Managing Resouces using Context Managers
- 3 Conclusion
Introduction of Context Manager in Python
Python provides a concept of a context manager that enables developers to execute the concept of context manager to manage the resources.
In programming languages, Resources are widespread but these resources are limited to supply so it’s better to close the resources after usages these resources. If these resources are not closed after its usages it leads to the resources and causes the system to crash or slow down. So it’s better options to close the resources once its usage for example database connection, file handling, etc.
Managing Resouces using Context Managers
Suppose a block of code raises an exception or it has a complex algorithm to multiple return statements, Then it is complex to close all the files in all the places. That’s why Python provides a concept of context managers that are used to manage the resources.
Context Manager is used with
with statements in Python. Python context manager can be written using classes or functions.
Creating a Python Context Manager
When creating a context manager using classes it must ensure that the class has the following methods.
- __enter()__:- This method returrn the resouces that need to be manage.
- __exit()__:- __exit()__ does not return the naything but cleanup the resoucses.
Let’s create our first Python context manager called ContextManager to understand what exactly going on in process of creating a python context manager.
Example:- Creating Python Context Manager
# Create context manager class ContextManager: def __init__(self): print("Init Method Called") def __enter__(self): print("Enter Method Called") return self def __exit__(self, exc_type, exc_value, exc_traceback): print("Exit Method Called") # Use Context Manager with ContextManager() as manager: print("with statement block!")
Init Method Called Enter Method Called with statement block! Exit Method Called
File Management Using Context Manager
Here we are going to create a class-based context manager that is capable of managing file-related operations such that open a file and read the file as well as the write contents to the file. This context manager’s name will be
Example: file management using a context manager
# Create context manager class FileContextManager: def __init__(self, filename, mode): self.filename = filename self.mode = mode self.file = None def __enter__(self): self.file = open(self.filename, self.mode) return self.file def __exit__(self, exc_type, exc_value, exc_traceback): self.file.close() # Use Context Manager with FileContextManager("simple.txt", "r") as ff: data = f.read() print(data) file.close()
Breakdown The Above Code
- First, we create a class based Context Manager named FileContextManager.
- Second, FileContextManager object is created when __init__ method is excecuted with simple.txt file name and
- Third, The __enter__ method open the simple.txt file with read operatiorn and return the
- Fourth, All the content stored inside
- Fifth, The __exit__ method is responsible for closing the file and exit from block.
Database Connection Management with Context Manager
Most of the time we need to connect our Python application with databases, Then we can create our own Context manager for database management. The context managers are really helpful for managing database connections.
Let’s create a Context Manager that is capable for manage MySQL Database connections.
import mysql.connector # Create context manager class MySQLConnectionManager: def __init__(self, hostname, username, password, database, port): self.host = hostname self.username = username self.password = password self.database = database self.port = port self.connection = None def __enter__(self): self.connection = mysql.connector.connect(host=self.host, user=self.username, password=self.password, database=self.database, port=self.port) return self.connection def __exit__(self, exc_type, exc_value, exc_traceback): self.connection.close() # Use Context Manager with MySQLConnectionManager("localhost", "root", "root21", "college", 3308) as mysqldb: mycursor = mysqldb.cursor() mycursor.execute("SELECT * FROM student") students = mycursor.fetchall() for st in students: print(st) mycursor.close()
(1, 'Vishvajit Rao', 'Bangalore', 'BCA', 70) (2, 'Vipul', 'Delhi', 'BCA', 90) (3, 'Vaibhav', 'Lucknow', 'BTech', 60) (4, 'Shivani', 'Lucknow', 'BTech', 65) (5, 'Mohit', 'Delhi', 'BPharma', 70) (6, 'Shivam Kumar', 'Lucknow', 'BCA', 100) (7, 'Harprit', 'Delhi', 'BTech', 150) (8, 'Harprit Kaur', 'Delhi NCR', 'BTech CS', 90) (9, 'Rashee', 'Bangalore', 'MCA', 90) (10, 'Vikas Yadav', 'Noida', 'MTech', 500)
Click here to install a Python MySQL connector.
Breakdown The Above Code
- MySQLConnectionManager represent the Context manager name.
- The __init__ method will excecute when object of
MySQLConnectionManageris created and assign the values of
- The __enter__ method establish the connection and return the connection.
- The __exit__ method is capable of close the connection and exit.
MySQLConnectionManagerwith with keyword and pass values of host, username, password, database and port.
- Define a cursor object named mycursor using
- Execute a sql query
SELECT * FROM studentto select all the records from
- Now fetch all the students using
- And after that we have used Python for loop to iterate each object.
So, in this article, we have seen all about Python context manager with the complete process to create custom context manager with the help of examples. Context manager in Python is one of the most important concepts to manage resources. the init, enter and exit functions are the important function to create a Python context manager.
If you like this article, please share and keep visiting for further Python tutorials.
What is the Context Manager in Python?
Ans:- Python context manager allows developers to allocate and release resources precisely whenever they want.
How do you write a context manager in Python?
Ans:- Context manager in Python contains generally two magic methods enter and exit method. The
with statement in Python is also responsible for calling the context manager.
Thanks for your valuable time …. 👏👏👏