syncdb 和 migrate 有啥区别?

Posted

技术标签:

【中文标题】syncdb 和 migrate 有啥区别?【英文标题】:What is the difference between syncdb and migrate?syncdb 和 migrate 有什么区别? 【发布时间】:2014-02-19 13:51:58 【问题描述】:

我正在浏览 django 文档。在这里我有一个情况。在其中一份文档中,有人告诉我这样做

python manage.py migrate

在另一个方面

python manage.py syncdb

我不能做第一个(错误:找不到迁移命令。)但第二个对我来说很好。这是版本问题还是我需要处理其他问题。

【问题讨论】:

你能分享你正在谈论的文档链接吗? docs.djangoproject.com/en/1.6/intro/tutorial01 【参考方案1】:

migrate 命令是即将发布的 Django 1.7 中的新命令,尚未发布。

对于早期版本,您可以使用syncdb,或外部应用程序South。

阅读文档时,请使用文档版本切换器选择正确的版本。

例如,当前的1.6 Tutorial 使用syncdb,但dev tutorial(为即将发布的1.7 编写)使用migrate

【讨论】:

谢谢!!我花时间在那上面。你能告诉我一些关于南方的事情吗? virtualenv中的“pip install south”会得到包吗?? 是的,我尝试通过执行“pip install django==1.7”来安装最新版本..我不能这样做..你也能解释一下吗?? south docs 比我在这里写的任何评论都好。如果您遇到困难,请再问一个问题。 django 1.7 尚未发布。它正在开发中。您可以安装它,但我不推荐它,因为它不如 1.6 稳定并且可能会发生变化。 pip install South 无论如何都会为您提供 South (0.8.4) 的最新稳定版本,因此您无需指定版本【参考方案2】:

命令 migrate 属于名为 south (http://south.aeracode.org/) 的应用程序。

来自网站:

这是面向 Django 项目的南方智能架构和数据迁移。

在 Django==1.7 之前,您必须安装第三方应用程序才能执行数据库迁移。

请参阅readthedocs 的文档

【讨论】:

【参考方案3】:

这取决于您正在阅读的文档版本。 migrate 是来自 South 的命令,直到 django 的最新(当前开发或开发)版本是一个单独的应用程序。它终于集成到了 Django 中(基本上每个 django 项目都会使用它,这是理所当然的,所以值得一读)。

在 django 文档页面的右下角有一个选择器,您可以在其中切换不同版本的 Django,因此如果您正在为您的项目寻找信息,最好更改为您的 Django 版本'目前正在使用。

【讨论】:

以上是关于syncdb 和 migrate 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.8 - migrate 和 makemigrations 有啥区别?

执行python manage.py syncdb,报Unknown command: 'syncdb'

执行python manage.py syncdb,报Unknown command: 'syncdb'

DJango数据库报错 python manage.py syncdb

无法从 flask_migrate 导入 MigrateCommand

gh-ost 原理剖析