我很确定Django Migrations为Django平台带来了许多好处。我很难确定这些好处。
也许有人可以向我解释Django Migrations在什么情况下可能是有益的。它以何种方式使软件开发人员的工作受益?
我在文档中找不到那种信息。也许这是显而易见的,没有必要。
无论如何,提前感谢任何提示。
修改:对于不够准确,我深表歉意。我上面写的方式似乎暗示Django Migrations没有做任何有价值的事情,这不是我想要的。
我知道Django Migrations旨在使数据库与我的模型保持同步。我觉得很烦人的是,有时出现问题,我必须手动重置迁移。尽管如此,在您的回复之后,我相信我已经更好地理解为什么Django迁移是他们的方式。
答案 0 :(得分:2)
正如您的代码随着时间的推移而变化,您的数据库布局也是如此。模型获得新领域,您的应用程序获得新模型等。
您的代码可以更改并上传到您的服务器,替换旧文件。
但是您的数据库需要持久化。您不能只使用不同的数据覆盖您的数据库,并且如果您确定您的用户模型需要新字段,请让10.000用户再次注册。此外,团队中的每个开发人员都在其计算机上拥有自己的数据库。这些数据库的模式需要同步。
迁移允许您以受控方式更改数据库:您对数据库所做的任何更改都将在迁移过程中表示,并且可以“回放”#34;在另一台机器上。一些迁移系统还支持向上和向下迁移,允许向前和向后播放迁移(命令很重要!)。
迁移是代码库的一部分,这使得他们可以使用您常用的代码部署方法轻松跟踪和发送版本。
在迁移之前,Django允许"同步"您的模型与您的数据库。这样可以在数据库中进行一些非破坏性的更改。然而,无法实现在同步期间需要进行某些操作的更复杂的场景。
另一方面,迁移(作为Python代码)允许在迁移期间运行自定义代码。这样可以更灵活,更精细地控制数据库中的更改。答案 1 :(得分:1)
迁移可以轻松维护数据库更新。
您可以通过Django模型控制数据库。例如。在其中一个模型中添加一个字段。
然后,您可以进行迁移和迁移,并通过添加此字段在SQL数据库中复制这些更改。
答案 2 :(得分:0)
您对数据库进行了一些更改:
所以现在你需要修改数据库模式,转到它!
您有机会学习如何编写SQL,因此您需要首先执行此操作...哦,然后是您正在处理的敏感数据,因此您需要确保当你删除那张桌子时(Bobby表多了多少?)..
时会犯任何错误这听起来并不好玩,而且容易出错。特别是当你雇用新人时,你需要确保他们不会错误地删除EvilCorps数据。
因此,您选择将所有这些操作抽象为您所编写的语言的框架,将其存储在源代码控制中,并标记给提交它们的开发人员。
那么对开发者有什么好处?时间和抽象 - 我希望这些好处是显而易见的。