Что я должен использовать вместо syncdb в Django 1.9?

Взгляните на это:

$ pypy ./manage.py syncdb
/usr/lib64/pypy-2.4.0/site-packages/django/core/management/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
  warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)

(cut)

Я запустил быстрый поиск Google, но не смог найти ответ - что я должен использовать вместо syncdb?

Ответ 1

syncdb устарел из-за системы миграции, представленной с django 1.7.

Теперь вы можете отслеживать свои изменения, используя makemigrations. Это превращает ваши изменения модели в код python, чтобы сделать их доступными для развертывания в других базах данных. Когда у вас есть дополнительные изменения, которые необходимо применить к базе данных, вы можете использовать миграцию данных.

После создания миграций вы должны применить их: migrate.

Поэтому вместо использования syncdb вы должны использовать makemigrations, а затем migrate.

Рабочий процесс разработки после того, как вы что-то изменили в своих моделях:

./manage.py makemigrations
./manage.py migrate

И на вашей производственной системе:

./manage.py migrate

Бонус: вам не нужно запускать migrate для каждого изменения. Если у вас несколько изменений, которые не применяются, django будет запускать их в правильном порядке для вас.

Ответ 2

Вы должны обязательно использовать систему миграции. Это позволяет отслеживать изменения в models.py и создавать миграции для базы данных. Система миграции использует команды makemigrations для создания миграций и migrate для миграции базы данных.

Если по какой-либо причине вам нужно создать базу данных так же, как это делал syncdb, есть флаг команды, который заставляет migrate работать одинаково. Вы должны сделать это, только если вам нужен ДЕЙСТВИТЕЛЬНО, и вы знаете, что делаете. Например, для создания пустой базы данных для непрерывной системы интеграции по вашему выбору.

python manage.py migrate auth
# performs migrations for auth and contenttypes contrib apps

python manage.py migrate --run-syncdb
# creates the rest of the database

Протестировано на Django 1.9.1.

Ответ 4

syncdb имеет некоторые проблемы с миграцией db. поэтому после введения django 1.7 makemigrations и migrate. Теперь в django 1.9 syncdb устарели. попробовать
1. python manage.py makemigrations, который обнаруживает изменения в db и создает один файл .py как внутри папки миграций 2. python manage.py migrate применит миграцию к базе данных