ORM Модуль¶
Модуль orm отвечает за отображение объектов предметной области на реляционную базу данных с использованием SQLAlchemy. Содержит определения таблиц и их связей, а также настройки маппинга.
Таблицы базы данных¶
Таблица users¶
Основная таблица для хранения данных пользователей. Соответствует доменной модели User.
Функции маппинга¶
start_mappers()¶
Инициализирует маппинг между классами Python и таблицами базы данных.
Особенности:
- Использует императивный стиль маппинга SQLAlchemy
- Связывает доменную модель
Userс таблицейusers - Должна быть вызвана при старте приложения
Пример использования:
from src.adapters.orm import start_mappers
# Инициализация маппинга при старте приложения
start_mappers()
Рекомендации¶
- Миграции базы данных
- Используйте инструменты миграции (Alembic) для управления изменениями схемы
-
Все изменения структуры таблиц должны быть отражены в миграциях
-
Производительность
- Для часто используемых запросов добавляйте индексы
-
Используйте
selectinloadилиjoinedloadдля загрузки связанных сущностей -
Безопасность
- Не используйте сырые SQL-запросы без необходимости
-
Всегда валидируйте входные данные перед сохранением
-
Тестирование
- Используйте тестовую базу данных для юнит-тестов
- Применяйте транзакции для изоляции тестов
Пример использования¶
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) предоставляет интерфейс для работы с базами данных, который позволяет манипулировать объектами языка программирования, что в конечном счете, упрощает программирование.
Модуль src.adapters.orm содержит библиотеку для работы с ORM SQLite,
которая используется в этом проекте для хранения и извлечения данных из
базы.
Этот модуль предоставляет классы и функции, которые позволяют работать с таблицами базы данных, вставлять, извлекать и обновлять данные, а также взаимодействовать с базой данных напрямую через SQL запросы.
Основные классы и функции модуля:
DB: класс, который представляет собой соединение с базой данныхBase: базовый класс, от которого наследуются все моделиModel: абстрактный класс, представляющий таблицу базы данныхColumn: абстрактный класс, представляющий столбец таблицыIntegerColumn,StringColumn,FloatColumn,BooleanColumn: специализированные классы столбцовForeignKey: класс, представляющий внешний ключrelationship: декоратор для определения отношений между моделямиcreate_all: функция для создания всех таблиц в базе данныхdrop_all: функция для удаления всех таблиц в базе данных и множество других
Этот модуль используется в проекте для работы с базой данных