-1

嗨,我是 django 开发的新手,但无论如何我会尝试在这个问题上不要笼统。

我在设计模型时遇到了奇怪的问题。我想做很多改变——就像在项目开始时一样。问题是,在一个 syncdb 之后,我无法更改模型中的任何内容,除非我创建了全新的数据库并将其链接到 settings.py。奇怪的是我什至无法删除这个旧数据库。当我尝试从 Sequel Pro 执行此操作时,它会冻结。

我用谷歌搜索了一下,真的是 South 或类似的工具是在 django 的模型设计阶段有一些自由的唯一选择吗?

我知道这种机制是出于某种目的,例如保持现有项目的数据一致性,但我刚刚开始开发,所有表中甚至有 0 条记录。

我在我的开发中使用 5.6.13 MySQL 社区服务器,Django 1.5。全部在 OS X 上运行。

4

3 回答 3

5

如果您进行了一些更改,South 是一个很好的迁移工具。初学者可能需要一点时间才能完成,就像我一样,但最终你会喜欢它。除此之外,根据您的问题,您可以使用在 django 1.5flush中替换的 . reset请记住,它会刷新所有数据库,而不仅仅是应用程序。

python manage.py flush

不过幸好reset已经被移植回了这里。您所要做的就是安装,并将其添加到设置中。然后运行

python manage.py reset appname

希望这有帮助!

于 2013-11-11T08:51:32.133 回答
0

好的。部分我在这里找到了答案:Django:更改模型而不清除所有数据?

说:“ syncdb 只会为尚未安装的模型创建表。它永远不会发出 ALTER TABLE 语句来匹配安装后对模型类所做的更改。对模型类和数据库模式的更改通常涉及某种形式的歧义,并且,在这种情况下,Django 将不得不猜测要做出的正确更改。在此过程中存在丢失关键数据的风险。如果您对模型进行了更改并希望更改数据库表以匹配,请使用sql 命令来显示新的 SQL 结构并将其与现有的表模式进行比较以计算出更改。”

好的。我看到我可以运行python manage.py sql <app_name>然后我应该粘贴它python manage.py dbshell吗?

通过 dbshel​​l 我设法删除了整个数据库,这在 Sequel Pro 中是不可能的。

python manage.py dbshell

然后通过 MySQL:

drop database <db_name>;

为什么从 Sequel Pro 访问时数据库被冻结?

于 2013-11-11T08:40:51.940 回答
0

我试图避开南方,因为有很多意见认为它令人困惑,而且学习起来很费时间。一段时间后,我回首 SOUTH,我不得不说:

  1. 完全值得学习,一点都不难。
  2. 它是处理动态变化的模型的非常好的工具。

我可以向所有新手推荐一个很好的教程视频,他们会认为值得或不值得学习。http://www.youtube.com/watch?v=7yCmAhthkMk

于 2014-03-13T18:52:45.797 回答