Skip to content

ecodomen/YDB-django-connector

Repository files navigation

Адаптер YDB для Django

Этот репозиторий содержит реализацию адаптера базы данных для интеграции Яндекс Базы Данных (YDB) с ORM Django. Адаптер предназначен для обеспечения бесперебойной работы приложений Django с YDB, поддерживая его уникальные возможности и функции.

Компоненты адаптера

Адаптер состоит из нескольких ключевых компонентов, каждый из которых выполняет определённые функции, необходимые для интеграции с ORM Django. Ниже представлен обзор каждого компонента и рекомендации по его реализации:

1. DatabaseWrapper

  • Назначение: Основной интерфейс между ORM Django и YDB. Управляет подключениями к базе данных, выполнением запросов и управлением транзакциями.
  • Задачи реализации:
    • Управление подключениями к базе данных и повторными подключениями.
    • Реализация методов управления транзакциями (set_autocommit, commit, rollback).
    • Создание курсора, преобразующего запросы Django в запросы, совместимые с YDB.

2. DatabaseFeatures

  • Назначение: Определяет возможности YDB в отношении ожиданий Django к функциональности бэкенда.
  • Задачи реализации:
    • Указание возможностей, таких как supports_transactions, supports_json, has_bulk_insert и др.
    • Настройка флагов возможностей в зависимости от способностей YDB.

3. DatabaseOperations

  • Назначение: Настройка операций базы данных под особенности YDB, такие как форматирование дат, времени и синтаксис запросов.
  • Задачи реализации:
    • Реализация методов конвертации типов данных (date_extract_sql, datetime_cast_date_sql и т.д.).
    • Настройка синтаксиса SQL для функций типа last_insert_id, regex_search и других.

4. DatabaseClient

  • Назначение: Предоставляет утилиты для выполнения управленческих команд или задач по обслуживанию базы данных непосредственно из Django.
  • Задачи реализации:
    • Реализация методов для выполнения команд по обслуживанию базы данных с использованием инструментов YDB.

5. DatabaseCreation

  • Назначение: Управляет созданием схемы базы данных, её удалением и миграциями, специфичными для YDB.
  • Задачи реализации:
    • Адаптация фреймворка миграций Django для работы со способностями управления схемой YDB.
    • Обработка создания и удаления схемы базы данных для тестовых сред.

6. DatabaseIntrospection

  • Назначение: Позволяет Django анализировать таблицы и схемы базы данных для предложения типов полей моделей и других операций с метаданными.
  • Задачи реализации:
    • Сопоставление типов данных YDB с типами полей Django.
    • Реализация методов для получения списка таблиц, имен столбцов, хранимых процедур и т.д.

7. DatabaseSchemaEditor

  • Назначение: Управляет изменениями в схеме базы данных, такими как добавление и удаление индексов, полей и таблиц.
  • Задачи реализации:
    • Реализация методов изменения схемы с учётом возможностей и ограничений YDB.
    • Обработка динамических изменений схемы во время работы.

Начало работы

Для использования этого адаптера склонируйте этот репозиторий и настройте настройки вашего проекта Django для использования бэкенда YDB:

DATABASES = {
    'default': {
        'ENGINE': 'path.to.ydb_adapter',
        'NAME': 'your_database_name',
        'USER': 'your_username',
        'PASSWORD': 'your_password',
        'HOST': 'your_db_host',
        'PORT': 'your_db_port',
    }
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages