Skip to main content

Расширение механизма миграций Django для резервного копирования данных

Project description

Расширение механизма миграций Django для резервного копирования данных

Описание

Пакет django-backup-migrations расширяет стандартный механизм миграций Django, добавляя возможность автоматического создания резервных копий данных перед применением миграций. Это позволяет откатывать изменения в случае ошибок при выполнении миграций.

Основные возможности

  • Автоматическое определение таблиц для резервного копирования на основе операций миграции
  • Два типа резервного копирования:
    • full — полная копия всех данных таблицы
    • partial — копия только изменённых данных с момента последнего резервного копирования
  • Автоматическое определение зависимостей между таблицами через внешние ключи и триггеры
  • Управление состояниями: просмотр, откат и удаление состояний вместе с резервными таблицами в схеме backup

Требования

  • Python 3.10+
  • Django 4.2+
  • PostgreSQL (адаптер по умолчанию)

Подключение

1. Установка пакета

pip install django-backup-migrations

2. Добавление в INSTALLED_APPS

INSTALLED_APPS = [
    ...
    'django_backup_migrations',
    ...
]

3. Настройка конфигурации (опционально)

# settings.py
DJANGO_BACKUP_MIGRATIONS_ENABLED = True  # Включить/выключить резервное копирование

Или программно:

import django_backup_migrations

django_backup_migrations.set_config(
    django_backup_migrations.Config(
        enabled=True,
        tables_dependencies={
            'app_table': {'related_table1', 'related_table2'},  # Явные зависимости
        }
    )
)

Использование

Основная команда: backupmigrate

Команда backupmigrate заменяет стандартную команду migrate и выполняет резервное копирование перед применением миграций.

Базовое использование

# Применить все неприменённые миграции
python manage.py backupmigrate

# Применить миграции для конкретного приложения
python manage.py backupmigrate app_name

# Применить конкретную миграцию
python manage.py backupmigrate app_name 0004

# Применить миграции с полным резервным копированием
python manage.py backupmigrate --backup-type full

# Применить миграции с частичным резервным копированием (по умолчанию)
python manage.py backupmigrate --backup-type partial

Параметры команды

  • --backup-type — тип резервного копирования:
    • full — полная копия всех данных
    • partial — копия только изменённых данных (по умолчанию)
  • --backup-strategy — стратегия резервного копирования (путь к классу стратегии)
  • Все стандартные параметры команды migrate (например, --database, --fake, --plan)

Управление состояниями

Просмотр списка состояний

# Показать все состояния миграций
python manage.py liststates

Вывод показывает:

  • ID состояния
  • Дата и время создания
  • Статус (применено/ошибка)
  • Список применённых миграций

Откат к предыдущему состоянию

# Откат к конкретному состоянию по ID
python manage.py staterollback --to-state 5

# Откат от конкретного состояния к предыдущему
python manage.py staterollback --rollback-state 10

# Пробный запуск (dry-run) без реального отката
python manage.py staterollback --to-state 5 --dry-run

Удаление состояний

Команда dropstates удаляет записи о состояниях и связанные с ними резервные таблицы в схеме backup. Нужно указать ровно один способ выбора состояний:

# Удалить все состояния с id строго меньше указанного
python manage.py dropstates --before 10

# Удалить состояния с указанными id
python manage.py dropstates --id 3 --id 5 --id 7

# Оставить только последние N состояний (по дате), остальные удалить
python manage.py dropstates --keep-last 5

# Указать базу данных и пробный запуск
python manage.py dropstates --keep-last 3 --database default --dry-run

Параметры:

  • --before ID — удалить все состояния с id < ID
  • --id ID — удалить состояния с указанными id (можно передать несколько раз)
  • --keep-last N — оставить только последние N состояний
  • --database — имя базы данных (по умолчанию default)
  • --dry-run — только показать, какие состояния будут удалены

Разработка и качество кода

Ruff

Проект использует Ruff для проверки и форматирования кода.

ruff check src/
ruff format src/

isort

Проект использует isort для сортировки и организации импортов.

isort src/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_backup_migrations-2.0.0.tar.gz (36.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_backup_migrations-2.0.0-py3-none-any.whl (43.4 kB view details)

Uploaded Python 3

File details

Details for the file django_backup_migrations-2.0.0.tar.gz.

File metadata

  • Download URL: django_backup_migrations-2.0.0.tar.gz
  • Upload date:
  • Size: 36.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for django_backup_migrations-2.0.0.tar.gz
Algorithm Hash digest
SHA256 4a25130c6d6134527d20ec596c30f6165c3eb78a122a03a17fc9fc676b2dcc55
MD5 1e8f262caa74b417ac182416da25a7ac
BLAKE2b-256 564ff8464a66c4b75d36f5c4f76124656345af6a88747d5f340964db33296b27

See more details on using hashes here.

File details

Details for the file django_backup_migrations-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_backup_migrations-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8eeece376d5c732e5c140b36eb6942d5056522c350ab330160aaf3aa6c468165
MD5 fbe71bb5d0ef1aad7d75535c38d66e83
BLAKE2b-256 32fe40dc14fd0c5e926d55244bd773b4f9504f4350e8e06ecf74457c561ce4bc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page