【发布时间】:2010-09-15 14:46:12
【问题描述】:
【问题讨论】:
标签: django data-migration
【问题讨论】:
标签: django data-migration
Django 现在有自己的内置迁移,记录在:
【讨论】:
Perform these steps in order may help you:
For more details,
点击这里:http://south.readthedocs.org/en/latest/
1) python manage.py schemamigration apps.appname --initial
以上步骤默认创建迁移文件夹。
2) python manage.py migrate apps.appname --fake
生成虚假迁移。
3)python manage.py schemamigration apps.appname --auto
然后你可以根据需要添加字段并执行上述命令。
4) python manage.py migrate apps.appname
然后将文件迁移到数据库中。
【讨论】:
另一种技术是使用 dumpdata 和 loaddata 参数来管理.py,在中间杀死你的数据库:
python manage.py dumpdata > dump.jsonpython manage.py loaddata dump.json请参阅manage.py docs 了解更多信息。
【讨论】:
python manage.py sqlreset appname 打印必要的 SQL 语句,但实际上并不运行它们。
我问了一个类似的问题here,得到了很多答案。
有很多方法可以做到这一点,例如使用 SQL 手动执行转储和重新加载、使用固定装置或使用 Django 的“新兴”模式演变包之一:
【讨论】:
取决于更改的范围。如果它超出了 ALTER,那么您正在做大手术。备份模型和数据库,以便您可以返回。
我的偏好是将您的新(修订、更正、扩展)模型作为新应用程序放入。它没有 URL 或任何东西,只是一个模型。
从旧模型中提取数据后,您可以以首选的新格式重建数据库。
【讨论】:
使用 manage.py sqlall 查看新列的参数是什么,并使用 Alter table 语句手动将它们添加到数据库中。这样您就不必重做数据库;但它需要一些 SQL 知识...
看看here(向下滚动到“对数据库架构进行更改”)
【讨论】: