Подтвердить что ты не робот

Каков наилучший способ переноса данных в django

После внесения некоторых изменений в мои модели (например, новое поле в модели и новой модели), каков наилучший способ отразить эти изменения в моей заполненной базе данных?


PS: Я хотел увидеть множество решений в одном месте. Видимо, больше решений уже перечислено здесь.

4b9b3361

Ответ 1

Я задал аналогичный вопрос здесь и получил довольно много ответов.

Существует довольно много способов сделать это, например, вручную выполнять сброс и перезагрузку с помощью SQL, используя приборы или использовать один из "новых" пакетов эволюции схемы для Django:

Ответ 2

Другой метод - использовать аргументы dumpdata и loaddata для manage.py, убивая вашу базу данных между ними:

  • python manage.py dumpdata > dump.json
  • С помощью внешнего инструмента удалите все затронутые таблицы или уничтожьте весь db
  • python manage.py loaddata dump.json

Подробнее см. manage.py docs.

Ответ 3

Зависит от объема изменений. Если это за пределами ALTER, вы делаете крупную операцию. Сделайте резервные копии модели, а также базы данных, чтобы вы могли вернуться.

Мое предпочтение заключается в том, чтобы добавить новую (пересмотренную, исправленную, расширенную) модель в качестве нового приложения. У него не будет URL или что-то еще, только модель.

  • Создание новой модели в качестве нового приложения. Создайте тесты, чтобы убедиться, что они работают.
  • syncdb для создания промежуточной реализации новой модели.
  • Напишите небольшую одноразовую утилиту для запроса старой модели и загрузите новую модель. Вы можете попробовать это в чистом SQL. Я предпочитаю писать простой цикл запроса, сборки и сохранения.
  • После загрузки новой модели вы можете отправить это в файл JSON.

Как только вы вытащили данные из своей старой модели, вы можете перестроить свою БД в предпочтительном новом формате.

  • Переместите новую модель в существующее приложение.
  • Удалите старые версии таблиц приложений.
  • syncdb для создания новых таблиц.
  • Загрузите файл JSON с данными.

Ответ 5

Посмотрите с помощью manage.py sqlall, что параметры для новых столбцов и вручную добавьте их в свою базу данных с помощью операторов таблицы Alter. Таким образом, вам не нужно повторять свою базу данных; Это требует некоторых знаний SQL, хотя...

Посмотрите здесь (Прокрутите вниз до "Внесение изменений в схему базы данных" )

Ответ 6

Perform these steps in order may help you:

For more details,

clickhere: http://south.readthedocs.org/en/latest/

1) python manage.py schemamigration apps.appname --initial

На следующем этапе создается папка миграции по умолчанию.

2) python manage.py migrate apps.appname --fake

создает фальшивую миграцию.

3) python manage.py schemamigration apps.appname --auto

Затем вы можете добавить поля по своему усмотрению и выполнить приведенную выше команду.

4) python manage.py migrate apps.appname

Затем перенесите файлы в базу данных.