Использование теста Django для анализа и восстановления данных базы данных
У меня была идея, и перед тем, как ее реализовать, я бы хотел ее высказать, чтобы получить обратную связь или даже обнаружить, что кто-то уже сделал.
Вот в чем дело: у меня есть веб-сайт, работающий с базой данных, которая растет довольно быстро и за месяцы, и из-за нескольких проблем, которые возникли, были заполнены большим количеством мусора. Я думал о том, чтобы поставить несколько сценариев, чтобы запустить базу данных и навести порядок. Итак, моя идея заключалась в том, чтобы использовать тесты Django таким образом, чтобы можно было написать большую сумму небольших простых тестов, которые бы выполняли именно это, за исключением того, что вместо того, чтобы поднимать флаг, на самом деле все было бы исправлено.
Что, вы парни, думаете? Я не могу думать ни по какой причине, почему это не сработает. Но я не такой опытный в Джанго. Будет ли это трудно? Любая предсказуемая проблема?
Спасибо!
1 ответ
Нет, это плохая идея по многим причинам, начиная с точки зрения проектирования и заканчивая вопросами реализации. Просто упомянуть несколько:
- Тесты не запускаются на реальной базе данных. Для него создается отдельная база данных. Тебе придется взломать это.
- Обычно каждый тестовый случай, который касается БД, выполняется в транзакции, а затем откатывается. Таким образом, в итоге БД не изменилась вообще. Ofc вы также можете избежать этого, но это не главное.
- Тесты должны выполняться все время, когда вы что-то меняете. Но проблемы, о которых вы говорите, должны решаться только один раз (в основном).
Но есть очень простое и подходящее решение для того, что вы хотите сделать:
- Установить Юг
- Исправлена ошибка, которая вызывает неправильные / нежелательные данные.
- Записать перенос данных, который исправляет / очищает уже существующие "испорченные" данные.
- Обновите и перенесите.
- Повторите 2-5
Теперь это только для одноразовых исправлений, но в большинстве случаев это правильный способ сделать это. Вы исправляете ошибку, которая вызывает проблему с данными, вместе с исправлением данных.
Если вам действительно нужны одни и те же функции изменения данных для запуска более одного раза (периодически), то для этого вы можете создать собственную команду управления (или просто простой исполняемый скрипт python) и запланировать ее запуск из cron.