Junior — Middle
How do you separate business rules from the data storage layer in the application?
sobes.tech AI
Answer from AI
To separate business logic and data storage layer in a Python application, I use an architectural approach with a clear separation of layers:
- Model — describes the data structure and interaction with the database, for example, through ORM (Django ORM, SQLAlchemy).
- Service layer — implements business rules and data processing logic.
- Controllers or views — handle requests and invoke services.
This separation allows changing business logic without affecting the storage layer and vice versa.
Example using SQLAlchemy and a service layer:
# model.py
from sqlalchemy import Column, Integer, String
from base import Base
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
# service.py
class UserService:
def __init__(self, session):
self.session = session
def create_user(self, name):
user = User(name=name)
self.session.add(user)
self.session.commit()
return user
Thus, business rules are concentrated in services, and models only handle structure and data storage.