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

看看这个:

$ 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)

我运行了一个 快速谷歌搜索,但找不到答案-我应该使用什么而不是 syncdb

93261 次浏览

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

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

由于 迁徙系统是与 姜戈1.7一起引入的,因此不推荐使用 syncdb

现在您可以使用 makemigrations进行 赛道更改。这会将模型更改转换为 python 代码,从而使其可部署到另一个数据库。当需要对数据库进行进一步修改时,可以使用 数据迁移

在您创建迁移之后,您必须对它们进行 申请: migrate

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

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

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

在你的生产系统上:

./manage.py migrate

额外好处: 您不需要为每次更改运行 migrate。如果有多个更改尚未应用,django 将按照正确的顺序运行它们。

你绝对应该使用 迁徙系统。它允许您跟踪 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上测试。

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