gpt4 book ai didi

python - 更新 django 数据库以反射(reflect)现有模型的变化

转载 作者:IT老高 更新时间:2023-10-28 21:37:15 25 4
gpt4 key购买 nike

我已经定义了一个模型并通过 manager.py syncdb 创建了它的关联数据库。现在我已经在模型中添加了一些字段,我再次尝试了 syncdb,但没有出现任何输出。在尝试从我的模板访问这些新字段时,我得到一个“没有这样的列”异常,让我相信 syncdb 实际上并没有更新数据库。这里的正确命令是什么?

最佳答案

As of Django 1.7+, built-in migrations support, allows for database schema migrations that preserve data. That's probably a better approach than the solution below.

另一个不需要额外应用程序的选项是使用内置的 manage.py 函数来导出数据,清除数据库并恢复导出的数据。

以下方法将为您的应用更新数据库表,但会完全销毁这些表中存在的所有数据。如果您对应用模型所做的更改不会破坏您的旧架构(例如,您添加了一个新的可选字段),您可以简单地在之前转储数据并在之后重新加载,如下所示:

Django 1.4.15 及更早版本

python manage.py dumpdata <your_app> > temp_data.json
python manage.py reset <your_app>
python manage.py loaddata temp_data.json

Django 1.5 及更新版本

python manage.py dumpdata <your_app> > temp_data.json
python manage.py sqlclear <your_app> | python manage.py dbshell
python manage.py syncdb
python manage.py loaddata temp_data.json

(reset 命令已被弃用,然后在 Django 1.5 中被删除)

如果您的更改破坏了旧架构,这将不起作用 - 在这种情况下,像 South 这样的工具或 Django Evolution很棒。

关于python - 更新 django 数据库以反射(reflect)现有模型的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1985383/

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