Python 在django中更改模型会导致数据库损坏吗?

Python 在django中更改模型会导致数据库损坏吗?,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我在models.py文件中添加和删除了字段,然后运行manage.py syncdb。通常,在syncdb做任何事情之前,我必须退出shell并重新启动它。即使在那之后,我在尝试访问管理页面时也会出错,似乎我添加的某些新字段仍然没有显示在模型中: Caught an exception while rendering: no such column: mySite_book.Title Django不会为您执行数据库迁移,即,如果您添加新字段,Django不会修改您的数据库模式 您可以: 删

我在models.py文件中添加和删除了字段,然后运行manage.py syncdb。通常,在syncdb做任何事情之前,我必须退出shell并重新启动它。即使在那之后,我在尝试访问管理页面时也会出错,似乎我添加的某些新字段仍然没有显示在模型中:

Caught an exception while rendering: no such column: mySite_book.Title

Django不会为您执行数据库迁移,即,如果您添加新字段,Django不会修改您的数据库模式

您可以:

  • 删除已更改的表,然后再次执行syncdb。在开发应用程序时,如果数据库中没有任何真实数据,这是合理的
  • 使用这样的迁移工具执行数据库迁移(如hibernate更新脚本)
  • 手动编辑数据库,并为以前存在的表添加/删除适当的字段

  • 就@Barthelemy的答案而言,有几个:

    • (仅限MySQL)

    对我来说,(只要您使用测试数据执行此操作,而不是在生产环境中执行此操作),就更容易取消test.db并执行新的./manage.py syncdb。值得思考……

    我正在使用SQLite,如何删除表?可以从django做吗?还是需要通过SQLite命令控制台进行连接?如果我删除表,当我再次运行时,syncdb会自动重建它们吗?是的,如果您删除表,syncdb会自动重建它们。您可以使用SQLite命令控制台或众多gui工具之一,如:和