Избегайте повторного заполнения базы данных Django - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть сценарий заполнения, который должен запускаться при первом запуске приложения.Только в первый раз.

Приложение работает как контейнер Docker.В настоящий момент я делаю это до запуска приложения django, когда контейнер запускает сценарии заполнения.

Это приводит к тому, что при перезапуске контейнера снова запускаются сценарии заполнения, что приводит к дублированию записей.

Какую стратегию я могу использовать, чтобы избежать повторного заполнения базы данных?У меня есть пара идей:

  1. отметка в файловой системе контейнера.Очень легко реализовать, но я не уверен, что это переживет перезапуск контейнера?В любом случае я отказался от этого, потому что он определенно не переживет перестройку контейнера.
  2. отметка в базе данных.Это кажется слишком сложным для реализации, но кажется наиболее надежным решением: оно будет работать только тогда, когда БД не помечена, и автоматически обнаруживать всякий раз, когда БД поцарапана.
  3. пометить в постоянном томе.Это мое предпочтительное решение.Единственная незначительная проблема заключается в том, что царапины базы данных не будут обнаружены (но я могу справиться с этим вручную)

Есть ли у вас какие-либо другие идеи, как этого добиться?

1 Ответ

0 голосов
/ 28 сентября 2018

Предполагая, что вам придется в любом случае запускать миграции при первом запуске приложения, вы можете создать Перенос данных и полагаться на механизм миграции Django, чтобы он запускался только один раз в базе данных.

...