Search code examples
pythondjangodjango-rest-frameworkdjango-migrationsdjango-database

Django: safely deleting an unused table from database


In my django application, I used to authenticate users exploiting base django rest framework authentication token. Now I've switched to Json Web Token, but browsing my psql database, I've noticed the table authtoken_token, which was used to store the DRF authentication token, is still there. I'm wondering how to get rid of it. I've thought about 2 options:

  1. deleting it through migration: I think this is the correct and safer way to proceed, but in my migrations directory inside my project folder, I didn't find anything related to the tokens. Only stuff related to my models;
  2. deleting it directly from the database could be another option, but I'm afraid of messing with django migrations (although it shoudn't have links with other tables anymore)

I must clarify I've already removed rest_framework.authtoken from my INSTALLED_APPS


Solution

  • To remove the authtoken tables you may use django's migration command in the following way:

    python manage.py migrate authtoken zero
    

    This will revert all the migrations from the authtoken app, effectively removing the tables from the database (as long as this doesn't break any constraints).

    The zero migration can be used with any installed django app (see relevant django documentation).

    After running the zero migration, you may remove the app from INSTALLED_APPS