在Django 1.9中我应该使用什么而不是syncdb?

时间:2015-04-16 18:49:50

标签: python django django-1.8

看看这个:

$ 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

4 个答案:

答案 0 :(得分:84)

syncdb因“{3}}引入the migration system而被弃用。

现在,您可以使用makemigrations 跟踪您的更改。这会将您的模型更改转换为python代码,以使它们可以部署到另一个数据库。如果需要进一步修改,则需要使用django 1.7

创建迁移后,您必须应用migrate

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

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

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

在你的生产系统上:

./manage.py migrate

奖励:您不需要为每次更改运行migrate。如果您还没有应用多个更改,那么django会以正确的顺序为您运行它们。

答案 1 :(得分:46)

你绝对应该使用migration system。这使您可以跟踪extern中的更改,并为数据库创建迁移。迁移系统使用命令makemigrations创建迁移,使用migrate迁移数据库。

如果由于某种原因你需要以models.py的方式创建数据库,那么会有一个命令标志使syncdb以相同的方式工作。只有当真的需要它并且您知道自己在做什么时,才应该这样做。例如,为您选择的持续集成系统创建一个空数据库。

migrate

在Django 1.9.1上测试。

答案 2 :(得分:7)

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

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

答案 3 :(得分:2)

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