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

Управление миграциями баз данных (chutils db)

Группа команд chutils db предоставляет удобную обертку над Alembic для управления миграциями баз данных. Она полностью избавляет от необходимости вручную настраивать alembic.ini и env.py в корне проекта. Вся конфигурация генерируется динамически, а миграции автоматически генерируются на основе метаданных ваших моделей SQLAlchemy.

[!NOTE] Инструменты управления миграциями требуют наличия установленной библиотеки alembic (опциональная зависимость). Для установки используйте: pip install chutils[db].


Конфигурация проекта

Для использования команд миграций, chutils должен знать, где находятся метаданные моделей SQLAlchemy и URL базы данных. Настройки считываются из общего конфигурационного файла config.yml:

Database:
  database_url: "sqlite+aiosqlite:///project.db"
  metadata: "app.db:Base.metadata"  # Путь импорта метаданных моделей
  migrations_path: "migrations"      # Директория хранения миграций (по умолчанию migrations/)

Список команд

1. chutils db status

Показывает информацию о текущем состоянии базы данных и примененных миграциях.

chutils db status

2. chutils db make-migration

Создает новый файл миграции на основе сравнения моделей SQLAlchemy с текущим состоянием базы данных. При первом запуске chutils автоматически инициализирует директорию миграций и создаст асинхронный env.py.

chutils db make-migration "Добавить таблицу пользователей"

Опции:

  • --metadata <import_path> — Переопределить путь к метаданным, указанный в конфигурации.
  • --migrations-path <path> — Переопределить путь к директории миграций.

3. chutils db upgrade

Применяет миграции до указанной ревизии. По умолчанию обновляет базу данных до самой последней ревизии (head).

chutils db upgrade [revision]

4. chutils db downgrade

Откатывает миграции до указанной ревизии. По умолчанию откатывает на один шаг назад (-1).

chutils db downgrade [revision]

5. chutils db history

Выводит полную историю созданных миграций в проекте.

chutils db history