在 Django 1.9 中我应该使用什么来代替 syncdb?

What should I use instead of syncdb in 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)

我 运行 一个 quick google search,但找不到答案 - 我应该使用什么来代替 syncdb

您应该使用 django 1.7 中引入的 makemigrationsmigrate 命令

https://docs.djangoproject.com/en/1.7/topics/migrations/

syncdb 已弃用,因为 the migration system, introduced with django 1.7.

现在您可以使用makemigrations跟踪您的更改。这会将您的模型更改转换为 python 代码,使它们可部署到另一个数据库。当您需要对数据库进行进一步修改时,可以使用 data migrations.

创建迁移后,您必须应用它们:migrate.

因此,您应该使用 makemigrations,而不是 syncdb,然后使用 migrate

更改模型中的某些内容后的开发工作流程:

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

在您的生产系统上:

./manage.py migrate

好处:您不需要为每个更改 运行 migrate。如果您有多项更改尚未应用,django 将 运行 以正确的顺序为您应用。

您绝对应该使用 migration system. Which lets you track changes in your models.py, and create migrations for the database. The migration system uses the commands makemigrations to create migrations and 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 上测试。

syncdb 数据库迁移有一些问题。因此,在引入 django 1.7 makemigrationsmigrate 之后。 现在在 django 1.9 中 syncdb 已被弃用。 尝试
1. python manage.py makemigrations 检测数据库中的变化并在迁移文件夹中创建一个 .py 文件 2. python manage.py migrate 将迁移应用到数据库