Можно ли воспроизвести django -simple-history до указанного c ID для восстановления удаленной базы данных? - PullRequest
0 голосов
/ 17 июня 2020

Ситуация такова:

Я разработал веб-приложение, используя django (и особенно «django -simple-history»).
У меня есть база данных postgres «db01» с модель истории "db01_history", которая создается / заполняется с использованием "django -simple-history". Я случайно удалил все из «db01» и, к сожалению, у меня нет резервной копии базы данных.

Мой вопрос:
Есть ли способ воспроизвести все исторические записи «db01_history» (вплоть до Speci c ID) в исходную базу данных "db01"?
(Другими словами, есть ли способ восстановить базу данных с использованием ее исторической модели до указанной c даты / ID?)

Раздача db0_history -> db01

1 Ответ

1 голос
/ 17 июня 2020

К счастью, django -simple-history продолжает использовать имена и типы полей вашей собственной модели (но не сохраняет некоторые ограничения).

Разница в том, что для каждого из ваших удаленных объектов существует несколько исторических объектов. Если вы используете первичный ключ по умолчанию Django (id), вам будет легко сгруппировать свои таблицы по id и использовать последнюю запись от history_date (время записанной истории).

Исключением является то, что если вы используете больше прямых операций с базой данных, таких как update s или bulk_create s от менеджеров моделей, у вас нет их истории.

Таким образом, вы можете просто настроить свой проект на использование копию исторической базы данных, имеющую только последнюю запись для каждого объекта, а затем попробуйте сделать python manage.py dumpdata > dump.json, а затем вернуть настройки базы данных к новой базе данных, которая вам нравится, и сделать python manage.py loaddata dump.json.

Чтобы быть кратким, да у вас могут быть все ваши данные в вашей исторической базе данных.

...