在Django中删除并重新创建旧表

时间:2012-06-02 16:19:32

标签: django django-models django-syncdb

我处于开发的初始阶段,模型正在发生很大的变化 我必须继续删除旧表,然后执行“syncdb”

虽然我很欣赏syncdb不会改变旧表的原因,

是否可以(或者是否有其他选择)自动删除旧表然后运行syncdb?

2 个答案:

答案 0 :(得分:2)

我通常这样做是在数据库级别。例如,如果您使用的是postgres,并且只想吹掉整个数据库以重新开始,那么您可以这样做:

dropdb -U postgres "dbname"
createdb -U postgres -O "db_user" "db_name"

对于我正在处理的长项目,我使用fabfile来自动执行上述任务,以及从我的生产服务器获取最新数据库,并覆盖我的本地开发数据库。

此外,相关的是数据库“迁移”,这在您在生产中运行一段时间后更改代码时成为一项要求。很多人/应用使用South,但我更喜欢Nashvegas来访问我的网站。

使用Nashvegas,我会创建一个0001_add_field_blah.sql文件,其中包含用于更改数据库的原始SQL命令。例如:

ALTER TABLE myapp_model RENAME COLUMN first_name TO given_name;

答案 1 :(得分:0)

我使用python manage.py reset <app>。我不认为在项目范围内有办法做到这一点。