Работу с базой данных следует размещать в отдельном слое приложения, так называемом слое доступа к данным (DAL). Этот слой может содержать классы или функции, отвечающие за выполнение запросов к базе данных, сохранение, обновление и удаление данных.
Лучше всего размещать логику работы с базой данных в структурах данных, таких как модели или репозитории. Обработчики (контроллеры) же должны вызывать соответствующие методы структур данных для выполнения операций с базой.
Пример кода для работы с базой данных (используя Python и SQLAlchemy):
```python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
# Добавление пользователя
new_user = User(name='John')
session.add(new_user)
session.commit()
# Обновление пользователя
user = session.query(User).filter_by(name='John').first()
user.name = 'John Doe'
session.commit()
# Удаление пользователя
user = session.query(User).filter_by(name='John Doe').first()
session.delete(user)
session.commit()
session.close()
```
Этот пример показывает работу с базой данных SQLite с помощью библиотеки SQLAlchemy. Логика работы с базой данных выделена в структуры данных (в данном случае класс `User`) и выполняется в обработчиках (выполнение операций с базой данных осуществляется в контексте сессии).
Итак, рекомендуется использовать модели или репозитории для работы с базой данных и вызывать их методы из обработчиков для выполнения операций сохранения, обновления и удаления данных.