gpt4 book ai didi

Django:更新数据库架构而不丢失数据

转载 作者:行者123 更新时间:2023-12-02 07:07:34 25 4
gpt4 key购买 nike

如果我想升级(更改)我的数据库架构(通过将新字段添加到 Django 模型中来将新字段添加到表中)而不丢失这些表中的数据,最好的解决方案是什么? “syncdb”当然不会添加它们,所以我需要您的建议如何更改表而不删除它们并使用syncdb再次重新创建。

最佳答案

当南不是一个选项时,我只是手动编写脚本进行小的更改。和我用的大的

./manage.py dumpdata appname

http://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-appname-appname-appname-model

将其放入文件中。运行正则表达式替换以更新任何添加/删除的字段,然后可以重置该应用程序。我必须承认我已经有一段时间没有这样做了,但如果需要的话,我可以获取一些特定的代码来为您执行此操作。

它使用loaddata加载备份

编辑

Django dump data for a single model?这个问题是类似的,可能有我正在谈论的信息。

如果您需要,请告诉我,我会为您挖掘我的旧脚本(或写出一个不错的简单脚本)。

更新

./manage.py dumpdata appname --indent=4 > appname.json

#open your fav text editor and do a find/replace

./manage.py reset appname
./manage.py loaddata appname.json

应该可以了。当您进行查找替换时,您只需要删除不再有的字段并添加不可为空的字段。 (至少)。

注释: --indent=4 可以很好地为您格式化所有内容。意思是4个空格。./manage.py 重置仅适用于 django 1.3 之前的版本(啊!),在 django 1.3 中,您必须执行 ./manage dbshel​​ldrop table。其 sql 可从命令 ./manage.py sqlreset appname 中找到。

关于Django:更新数据库架构而不丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5739880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com