How do I completely reset my Django (1.2 alpha) DB (dropping all tables, rather than just clearing them)?
manage.py flush does too little (won't work if there are schema changes) and
manage.py reset requires me to specify all apps (and appears to take a format that is different from just " ".join(INSTALLED_APPS)). I can obviously achieve this in a DB specific way, but I figured there must be a sane, DB backend agnostic way to do this.
[Edit: I'm looking for something that I can call from a script, e.g. a Makefile and that continues to work if I change the backend DB or add to
This Snippet gives you the code for a
manage.py reset_db command you can install, it's the minimum change that solves your problem
That said, from comments below:
You might as well just install Django command extensions to get reset_db and other goodies: https://github.com/django-extensions/django-extensions
% python manage.py help sqlreset Usage: manage.py sqlreset [options] <appname appname ...> Prints the DROP TABLE SQL, then the CREATE TABLE SQL, for the given app name(s). Options: -v VERBOSITY, --verbosity=VERBOSITY Verbosity level; 0=minimal output, 1=normal output, 2=all output --settings=SETTINGS The Python path to a settings module, e.g. "myproject.settings.main". If this isn't provided, the DJANGO_SETTINGS_MODULE environment variable will be used. --pythonpath=PYTHONPATH A directory to add to the Python path, e.g. "/home/djangoprojects/myproject". --traceback Print traceback on exception --version show program's version number and exit -h, --help show this help message and exit
Just like when you modify a model, Django will not automatically do this for you. It will only output the commands for you to copy and paste.