Django的型号同步表(Django Model Sync Table)

2019-07-30 02:14发布

如果我在一个Django模型更改字段,我怎么能与数据库中的表同步呢? 我需要做手工在数据库上还是有一个工具,做与过程帮助?

Answer 1:

唉,Django不支持任何简单的解决了这一点。

唯一的Django为你会做什么,是重新启动与匹配新模式,新表数据库:

$ #DON'T DO THIS UNLESS YOU CAN AFFORD TO LOSE ALL YOUR DATA!
$ python PROJECT_DIR/manage.py syncdb

下一个选项是使用不同的SQL *选项manage.py看什么的Django会做匹配当前模型到数据库,然后发出自己的ALTER TABLE命令,使一切工作的权利。 当然,这是容易出错,很难。

真正的解决办法是使用一个数据库迁移工具,如南来生成迁移代码。

这里有一个类似的问题与有关Django的各种数据库迁移选项的讨论。



Answer 2:

似乎没有能够添加注释到标记的答案,可能是因为我没有足够的代表(是很好,如果SO这样跟我说,虽然)。

反正,只是想补充的是,在回答后,我认为这是错误的关于执行syncdb -执行syncdb 接触表一旦被创建,并在其中有数据。 你应该通过调用其数据丢失(否则,你怎么可以添加新表新的应用程序吗?)

我认为,海报是指复位命令来代替,这确实导致数据丢失-它会删除该表并重新创建它,因此它会拥有所有的最新模式的转变。



Answer 3:

Django的演变可以提供帮助,但最好的选择真的是要规划出您的模式提前,或手动进行简单的修改。 或者说,是愿意删除表和重新同步敬酒您的测试数据。



Answer 4:

Django不提供此开箱。

下面是来自Django的书上的一些信息做手工 (见在更改数据库模式)。 这适用于简单的,简单的更改。

从长期来看,你可能会想使用迁移工具。 主要有三种选择:

  • Django的进化
  • Dmigrations (由西蒙·威利森,Django会的创始人之一书面)(与MySQL只适用)

编辑:通过TokenMacGuy链接的问题来看,我将添加两个多到列表中的完整性的缘故:

  • 洄游
  • simplemigrations


Answer 5:

只是扔在一个额外的见解 - dmigrations是相当不错的,明确的使用,但我要说南是你最好的选择。 再次,这是很容易进入,但它的功能更强大,还拥有的不仅仅是更多的MySQL数据库后端的支持。 它甚至处理MSSQL,如果那是你的事



文章来源: Django Model Sync Table