如何自动让syncdb添加列(不需要完全迁移)

vdb*_*oor 19 django django-models

当我对模型进行更改时(仅在开发期间添加列!),Django不会发出任何ALTER TABLE语句来更新数据库.有没有办法实现或解决这个问题? - 其他然后手动添加列?


注意我并不是真的在寻找一个完整的迁移解决方案,只是让我在路上添加列时可以继续编码.

Ale*_*int 23

使用python manage.py sqlclear YOURAPP会同dumpdataloaddata(由fish2000,其中还使用特定应用程序的简化版本的答案):

DB=/path/to/db.sqlite3
APP=YOURAPPNAME
tmpdate=$(date "+%Y%m%d-%H%M%S")

echo "+ Dumping django project database to fixture DUMP-${tmpdate}.json ..." &&\
python manage.py dumpdata $APP --format='json' --indent=4 --verbosity=1 > datadumps/DUMP-${tmpdate}.json &&\
echo '+ Backing up sqlite binary store...' &&\
cp $DB $DB.bk &&\
echo '+ Rebuilding database structure from model defs...' &&\
python manage.py sqlclear $APP &&\
echo "+ Reloading project data from fixture dump DUMP-${tmpdate}.json ..." &&\
python manage.py loaddata datadumps/DUMP-${tmpdate}.json
Run Code Online (Sandbox Code Playgroud)

  • 在较新版本的django(例如1.5)中,使用的命令是python manage.py sqlclear而不是reset (4认同)

Ign*_*ams 20

使用South等迁移工具.


jer*_*rry 5

对不起,这有点晚了,但我想我会在这里发帖,以防其他人遇到这个问题.如果您仍在开发中并且所有数据都是虚拟数据(意味着您不想保留任何数据),那么您所要做的就是删除数据库并再次运行syncdb.