Understanding CRUD Operations in Python Frameworks

CRUD (Create, Read, Update, Delete) operations are integral to developing web applications. This blog post explores the best Python frameworks available in 2024, their unique capabilities, and how they facilitate seamless CRUD operations.

1. Django

Django is a high-level web framework that promotes rapid development and clean, pragmatic design. One of its standout features is its Object-Relational Mapping (ORM) capabilities, which allow developers to interact with databases using Python objects instead of cumbersome SQL queries. This makes CRUD operations significantly simpler.

Example of CRUD with Django:


from myapp.models import MyModel

# Create
my_model = MyModel(name="Sample")
my_model.save()

# Read
objects = MyModel.objects.all()

# Update
my_model.name = "Updated Sample"
my_model.save()

# Delete
my_model.delete()
    

Django’s built-in admin interface further enhances usability, allowing developers to administer their application’s CRUD operations directly from a web interface without much additional code.

2. Flask

Flask is a micro web framework that is lightweight and flexible. It relies on extensions, with SQLAlchemy and Flask-SQLAlchemy being popular choices for managing database CRUD operations. This modular approach makes it easy to customize and scale applications.

Example of CRUD with Flask:


from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))

# Create
new_user = User(name="Alice")
db.session.add(new_user)
db.session.commit()

# Read
users = User.query.all()

# Update
user = User.query.get(1)
user.name = "Bob"
db.session.commit()

# Delete
db.session.delete(user)
db.session.commit()
    

The combination of its simplicity and the power of SQLAlchemy makes Flask a go-to framework for developers focusing on CRUD-based applications.

3. FastAPI

FastAPI is a modern, fast framework for building APIs with Python based on standard Python type hints. Its automatic generation of API documentation using OpenAPI is one of its most noteworthy features, which aids in developing RESTful services and performing CRUD operations efficiently.

Example of CRUD with FastAPI:


from fastapi import FastAPI

app = FastAPI()

@app.post("/items/")
def create_item(item: Item):
    return item

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return Item(item_id=item_id)

@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return item

@app.delete("/items/{item_id}")
def delete_item(item_id: int):
    return {"msg": "Item deleted"}
    

FastAPI’s asynchronous capabilities enhance performance, making it suitable for modern web applications.

4. Tornado

Tornado is a Python web framework and asynchronous networking library, designed to handle hundreds of thousands of simultaneous connections efficiently. It excels in scenarios requiring high-concurrency, making it well-suited for CRUD operations under heavy traffic.

Example of CRUD with Tornado:


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Get method")

    def post(self):
        self.write("Post method")

# Add more CRUD methods as needed
    

Its non-blocking I/O model allows Tornado to be incredibly responsive, making it ideal for real-time web applications.

5. Pyramid

Pyramid is a flexible framework that allows developers to define custom routes that can streamline managing CRUD endpoints. Its minimalistic approach makes it particularly appealing for developers who desire fine-grained control over their applications.

Example of CRUD with Pyramid:


@view_config(route_name='create', request_method='POST')
def create(request):
    return {"status": "created"}

@view_config(route_name='read', request_method='GET')
def read(request):
    return {"status": "read"}
    

Pyramid’s extensibility enables building both simple and complex applications depending on the project requirements.

6. Web2py

Web2py is a full-stack framework with an integrated development environment (IDE), which is particularly helpful for rapid application development. Its built-in web interface handles CRUD operations automatically, which is exceptionally handy for rapid prototyping.

Example of CRUD with Web2py:


# Define a simple model
db.define_table('user',
    Field('name', 'string'))

# CRUD operations handled automatically through the web interface
    

The framework’s simplicity and effectiveness make it great for developers looking to create applications quickly.

7. TurboGears

TurboGears combines the best components in Python and supports the MVC (Model-View-Controller) design pattern. This robust framework allows developers to create complex CRUD operations with community support and a cohesive structure.

Example of CRUD with TurboGears:


from tg import expose

class RootController:
    @expose('/create')
    def create(self):
        return "Create"

    @expose('/read')
    def read(self):
        return "Read"
    

TurboGears’ flexibility makes it a powerful choice for developers needing custom solutions.

8. Sanic

Sanic is a web server and web framework designed to provide fast HTTP responses. Its asynchronous request handling is perfect for performing CRUD operations against databases efficiently, making it highly scalable.

Example of CRUD with Sanic:


@app.route('/create', methods=['POST'])
async def create(request):
    return response.json({"status": "created"})
    

Sanic’s ability to handle multiple requests simultaneously helps ensure application responsiveness.

9. Dash

While Dash is primarily a framework for building analytical web applications, it does offer some features for CRUD operations, especially useful when integrating data manipulation functionalities.

Example of CRUD with Dash:


@app.callback(Output('output-container', 'children'),
              Input('input', 'value'))
def update_output(value):
    return f'You\'ve entered: {value}'
    

Dash excels in creating interactive visualizations that can enhance the presentation of data.

10. SQLAlchemy

SQLAlchemy is not a web framework but rather a powerful ORM that allows for easy interaction with various databases. Its capabilities for executing CRUD operations are formidable, especially when paired with frameworks like Flask.

Example of CRUD with SQLAlchemy:


from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
connection = engine.connect()
connection.execute("INSERT INTO users (name) VALUES ('Alice')")
    

SQLAlchemy’s database agnosticism and rich feature set make it an invaluable tool for any Python web developer.

Conclusion

Choosing the right Python framework for CRUD operations largely depends on your specific project needs, team size, and development goals. Each framework has its strengths, whether it’s Django’s robust ORM, Flask’s flexibility, or FastAPI’s speed. By understanding these nuances, developers can leverage the right tools to build efficient, scalable applications that meet user needs.

In summary, Python’s landscape offers a range of powerful frameworks that enhance CRUD operations, enabling developers to build feature-rich applications with ease. Select the one that aligns with your workflow, and harness its capabilities to deliver excellent software solutions.

Avatar photo

William Funchal

I'm CrewAI certified by @CrewAI and @DeepLearning, specializing in developing AI-driven microservices and Multi AI Agents architecture. (Java | Python | Crew AI).
I’ve been developing multi-agents-systems powered by Gen AI, as distributed event-driven microservices. With over 21 years of experience, I have a proven track record in web, mobile, IoT, and high-availability application development.

My core competencies include Crew AI framework, Multi AI Agents development, Python, Java (Spring Boot, Quarkus, Mutiny, Vert.x Event-Driven Architecture, and Kubernetes cluster deployment. I am also proficient in .NET Core, NoSQL Databases, Docker, and device protocols like BLE, Modbus, and TCP.

In my previous job at Philips, I helped design and develop backend microservices for Philips ECG Solutions (Heart Monitoring). This teamwork provided real-time diagnostic systems for patients' heart care.
Today, I work part-time as the System Architect at Mobitraxx. I lead the development of new software solutions.

More From Author

Implementing Reactive Programming Using Mutiny on the Quarkus Framework

Deploying Palo Alto VM-Series Firewall in HA Mode on Google Cloud Platform

Leave a Reply

Your email address will not be published. Required fields are marked *