How do I drop a table from SQLite3 in DJango? How do I drop a table from SQLite3 in DJango? django django

How do I drop a table from SQLite3 in DJango?


to clear out an application is as simple as writing:

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

then in order to rebuild your tables just type:

./manage.py syncdb


None of the answers shows how to delete just one table in an app. It's not too difficult. The dbshell command logs the user into the sqlite3 shell.

python manage.py dbshell

When you are in the shell, type the following command to see the structure of your database. This will show you all the table names in the database (and also the column names within tables).

SELECT * FROM sqlite_master WHERE type='table';

In general, Django names tables according to the following convention: "appname_modelname". Therefore, SQL query that accomplishes your goal will look similar to the following:

DROP TABLE appname_modelname;

This should be sufficient, even if the table had relationships with other tables. Now you can log out of SQLITE shell by executing:

.exit

If you run syncdb again, Django will rebuild the table according to your model. This way, you can update your database tables without losing all of the app data. If you are running into this problem a lot, consider using South - a django app that will migrate your tables for you.


Another simple way to do this while using Django 1.4 or below, would be

python manage.py reset app_name

which drops and re-creates the tables used by the models of this app.

This was deprecated in Django 1.3 and is no longer available from Django 1.5