Search code examples
mysqldjangodjango-admin

How to drop all tables from the database with manage.py CLI in Django?


How can I drop all tables from a database using manage.py and command line? Is there any way to do that executing manage.py with appropriate parameters so I can execute it from a .NET application?


Solution

  • As far as I know there is no management command to drop all tables. If you don't mind hacking Python you can write your own custom command to do that. You may find the sqlclear option interesting. Documentation says that ./manage.py sqlclear Prints the DROP TABLE SQL statements for the given app name(s).

    Update: Shamelessly appropriating @Mike DeSimone's comment below this answer to give a complete answer.

    ./manage.py sqlclear | ./manage.py dbshell
    

    As of django 1.9+ it's now

    ./manage.py sqlflush | ./manage.py dbshell