Расширение механизма миграций 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a25130c6d6134527d20ec596c30f6165c3eb78a122a03a17fc9fc676b2dcc55
|
|
| MD5 |
1e8f262caa74b417ac182416da25a7ac
|
|
| BLAKE2b-256 |
564ff8464a66c4b75d36f5c4f76124656345af6a88747d5f340964db33296b27
|
File details
Details for the file django_backup_migrations-2.0.0-py3-none-any.whl.
File metadata
- Download URL: django_backup_migrations-2.0.0-py3-none-any.whl
- Upload date:
- Size: 43.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8eeece376d5c732e5c140b36eb6942d5056522c350ab330160aaf3aa6c468165
|
|
| MD5 |
fbe71bb5d0ef1aad7d75535c38d66e83
|
|
| BLAKE2b-256 |
32fe40dc14fd0c5e926d55244bd773b4f9504f4350e8e06ecf74457c561ce4bc
|