Перейти к содержанию

ORM Модуль

Модуль orm отвечает за отображение объектов предметной области на реляционную базу данных с использованием SQLAlchemy. Содержит определения таблиц и их связей, а также настройки маппинга.

Таблицы базы данных

Таблица users

Основная таблица для хранения данных пользователей. Соответствует доменной модели User.

Функции маппинга

start_mappers()

Инициализирует маппинг между классами Python и таблицами базы данных.

Особенности:

  • Использует императивный стиль маппинга SQLAlchemy
  • Связывает доменную модель User с таблицей users
  • Должна быть вызвана при старте приложения

Пример использования:

from src.adapters.orm import start_mappers

# Инициализация маппинга при старте приложения
start_mappers()

Рекомендации

  1. Миграции базы данных
  2. Используйте инструменты миграции (Alembic) для управления изменениями схемы
  3. Все изменения структуры таблиц должны быть отражены в миграциях

  4. Производительность

  5. Для часто используемых запросов добавляйте индексы
  6. Используйте selectinload или joinedload для загрузки связанных сущностей

  7. Безопасность

  8. Не используйте сырые SQL-запросы без необходимости
  9. Всегда валидируйте входные данные перед сохранением

  10. Тестирование

  11. Используйте тестовую базу данных для юнит-тестов
  12. Применяйте транзакции для изоляции тестов

Пример использования

from sqlalchemy.orm import Session
from src.adapters.orm import start_mappers
from src.domain.model import User

# Инициализация маппинга
start_mappers()

# Пример работы с ORM
with Session(engine) as session:
    # Создание нового пользователя
    new_user = User(
        first_name="Иван",
        last_name="Иванов",
        email="ivan@example.com",
        hashed_password="hashed_password_here"
    )
    session.add(new_user)
    session.commit()

    # Получение пользователя
    user = session.query(User).filter_by(email="ivan@example.com").first()
Модуль ORM

Объектно-реляционная система управления базами данных (ORM) предоставляет интерфейс для работы с базами данных, который позволяет манипулировать объектами языка программирования, что в конечном счете, упрощает программирование.

Модуль src.adapters.orm содержит библиотеку для работы с ORM SQLite, которая используется в этом проекте для хранения и извлечения данных из базы.

Этот модуль предоставляет классы и функции, которые позволяют работать с таблицами базы данных, вставлять, извлекать и обновлять данные, а также взаимодействовать с базой данных напрямую через SQL запросы.

Основные классы и функции модуля:

  • DB: класс, который представляет собой соединение с базой данных
  • Base: базовый класс, от которого наследуются все модели
  • Model: абстрактный класс, представляющий таблицу базы данных
  • Column: абстрактный класс, представляющий столбец таблицы
  • IntegerColumn, StringColumn, FloatColumn, BooleanColumn: специализированные классы столбцов
  • ForeignKey: класс, представляющий внешний ключ
  • relationship: декоратор для определения отношений между моделями
  • create_all: функция для создания всех таблиц в базе данных
  • drop_all: функция для удаления всех таблиц в базе данных и множество других

Этот модуль используется в проекте для работы с базой данных