Home Python 9 Ways to clear a database from the CLI with manage.py in Django

9 Ways to clear a database from the CLI with manage.py in Django

9 Ways to clear a database from the CLI with manage.py in Django

I introduced how to upload the original data to the Django website using the custom management command and learn the easiest way to clear a database from the CLI with manage.py in Django as well as much more things that you don’t know about Django. The corresponding function is to clean the website. I’d like to go over a couple of possibilities for it here.

First, notes on the standard design in Django management instructions. When you use manage.py help you will see a whole host of commands starting with SQL. All of this shares a common quote – print SQL statements on standard exits. Almost all DB engines have a way of issuing commands with standard input, so this plays well with Unix’s philosophy of building pipelines for single-task systems.


9 Ways to clear a database from the CLI with manage.py in Django

Django also gives us the perfect shortcut to access the actual DB used for a specific project – dbshell command.

In a simple app like a blog with models “posts” and “tags”, you can return something like this:

$ python manage.py sqlflush


REMOVE "auth_permission";

REMOVE from "auth_group";

REMOVE "django_content_type";

REMOVE "django_session";

Delete KU- "blogapp_tag";

REMOVE "auth_user_groups";

DELETE "auth_group_permissions";

REMOVE FROM "Auth_user_user_permissions";

Delete - "blogapp_post";

Delete - "blogapp_post_tags";

REMOVE "auth_user";       

REMOVE "django_admin_log";


Note that there are many tables here because the project also included an administrator and auth applications from django.contrib.

We can make these SQL statements, and thus clear all DB tables on our website, by running:

python manage.py dbshell $ python manage.py SQL flush

Django gives a unique created command called flush that is particularly beneficial in this scenario.

But there is a problem with running a flush that may or may not bother you, depending on your goals. It clears all tables, and this also means verification data. So if you have created a default, default user when you start the app, you need to restart it now.

Maybe there’s a gentle way to clear your app’s data, without having to interact with other apps? Yes. In fact, I will show a few ways.

First, let’s see what some of the administrative commands might be. sqlclear will issue the required commands to drop all tables in a given application. For example:

$ python manage.py sqlclear blogapp


EAT TABLE "blogapp_tag";

EAT TABLE "blogapp_post";

DEKA TABLE "blogapp_post_tags";


So we can use it to identify a specific app, instead of using a method to kill all the flexibility. Something has been caught, though. While flush run deletes to erase all data in tables, sqlclear removes real tables. So in order to be able to work with websites, these tables need to be redesigned. Don’t worry, there is a command for this:

$ python manage.py sql blogapp


CREATE TABLE "blogapp_post_tags" (


    number of "post_id" NOT REFERENCES "blogapp_post" ("id"),

    "tag_id" varchar (50) ARE NOT VAIN References "blogapp_tag" ("name"),

    UNIQUE ("post_id", "tag_id")


CREATE TABLE "blogapp_post" (



CREATE TABLE "blogapp_tag" (



Now, this ‘s the simplest technique to wipe out your database: use dbshell to pipe sqlclear appname. Then print the name of the SQL app in dbshell.

Another option, which I like a little bit, is to take the subtitle Delete sqlflush-generated statements, save them in a text file, and then pip to dbshell when needed. For example, with the blog application mentioned above, the following statements should make you:


Delete KU- "blogapp_tag";

Delete - "blogapp_post";

Delete - "blogapp_post_tags";



The reason I do not like it is that it forces you to have clear table names stored somewhere, which is a repetition of existing models. In case you change some of your external keys, for example, the tables will need to be changed so this file will need to be updated.

My favorite way is with a plan. Django model API is flexible and simple, and we can simply apply it to the customs management command:

from django.core.management.base import BaseCommand

from blogapp.models import Post, Tag

class Command (BaseCommand):

def handle (actual, * args, ** options):

Mark.all.all (). Delete ()

Post.some.all (). Delete ()

Save this code as blogapp / management / commands / clear_models.py, and it can now be requested by:

$ python manage.py clear_models

What is Django doing?

flush. It removes all data from the website and reuses any sync holders after sync. The migration table used is not deleted. If you would like to start on an empty website and reuse all migrations, you should drop down and re-create the website and resume migration instead.

If you would like to start on a blank website and re-use all migrations, you should drop down and re-create the site and run migrate instead. For example, you can write:, Delete all data on the website and reuse any sync holders after sync. The migration table is not deleted See more.

$ django-admin  [options]

   $ manage.py  [options]

      $ python -m django  [options]       

The best way is to dump the website and use syncdb again. Or you can start:, I use Django to build a website with MySQL. That I’ve learned that I’d have to switch Models more frequently, I’d like to remove all the tables and establish a new one. Older tables, however, are unaffected by syncdb. Would really be an effective solution to deal with this issue? , If you publish a model, it generates and stores several of its external keys if it doesn’t already exist: A call to # code #, on the other hand, indicates an error, because

  • Django> = 1.5
  • python manage.py flush

Django documentation for details.

See the Django documentation for details. The example used in this study is similar to the one used in the Django text. A sample of the project can be downloaded from here.

the mysite directory is a tool for your project. In Project View, it is indicated in bold font.

manage.py: This is a command-line tool that allows you to interact with your Django project. See Django documentation for details.

Mysite nested guide is a real Python package for your project.

mysite / settings.py: This file contains a configuration for your Django project.

mysite / urls.py: This file contains URL announcements for your Django project.

mysite / wsgi.py: This file describes the login of WSGI-compliant web servers to run your project. See How to Use WSGI for more details.

Nest-based directory files contain all the files needed to upgrade the Django system (currently, these files are empty):

polls / views.py: In this file, we will create a view.

The template directory is now empty. Must contain template files.

Nest migration entries now only contain the package file _init_.py but will be used in the future to spread the changes you are making to your models (adding a field, removing a model, etc.) to your website schema. Read the migration description here.

Note that you can create as many Django apps as needed. To add an application to a project, use the first application function of the manage.py tool (Tools | Start the function of manage.py, then type the application in console).


The subfolder of the local library project is the website entry:, Lesson: Home Library Website, Django Lesson: Home Library Website, Express Study:

Home Library Website

local library / # Website folder

manage.py # Script to use Django tools

in this project (created using Django - admin)

Local library / # Website / project folder (created using django - admin)

catalog / # Program Folder (created using manage.py)

Manage the web application in the Azure portal, Azure Site, search for the app name and select an application in the results. You can also use the Azure portal version for this tutorial. Django runs on Azure App Service and connects to the Azure Database of the PostgreSQL Flexible Server (Preview) database. If you are unable to use PostgreSQL Flexible Server (Preview), then select the One Server option above. See more info on 10 Best Python Editors for Windows, Linux & Mac.

python3 – version

This quick guide shows you how to use Docker Compose to set up and run a simple Django / PostgreSQL application. Before you start, enter Name., Get Started with Docker, Install Name Docker, These settings are determined by the Postgres Docker image specified in docker-compose.yml.

# syntax = docker / dockerfile: 1

FROM an anaconda: 3


WORKDIR / code

COPY requirements.txt / code /

DOWNLOAD. / code /

Django-admin and manage.py

Django-admin is Django’s command-line application for administrative tasks.

In addition, manage.py is automatically created for each Django project. Add the DJANGO SETTINGS MODULE context setting to refer to the project.py project file, and then go with Django-admin.

The Django-admin script should be on your system path if you have installed Django with a pipe. If it is not in your way, make sure your visible area is activated.

For compatibility, the single-line interface samples in this manual utilize Django-admin, however, any instance can use manage.py or python -m Django instead.


$ django-admin  [options]

$ manage.py  [options]

$ python -m django  [options]

$ django-admin  [options]

$ manage.py  [options]

$ py -m django  [options]

One of the methods given in this article should be used. choices, extra, ought to be one or more of the command’s possible choices.

Getting working time help

django-admin help

Launch django-admin help to show usage details and a list of instructions given for each application.

To see a table of every accessible command, run Django-admin help —commands.

To see an explanation of the provided function and a table of its possible choices, run Django-admin help.

App names

Most commands take a list of “application names.” “Application name” is the basic name of a package that contains your models. For example, if your INSTALLED_APPS contains a character unit ‘mysite.blog’, the name of the app is blog.

  • Determining the version
  • django-admin version

The output follows the schema defined in PEP 440:




Debug output is displayed.

If available, utilize —verbosity to control how much notice and debugging data Django-admin publishes to the terminal.

Bypassing their names as parameters, you can specify which tables or views to verify. Patterns for views are only constructed if the —include-views option is used if no arguments are specified. When the —include-partitions option is used, PostgreSQL creates templates for the partition table.

If you want to use Jungo with a legacy database, this is the tool to use. The script goes over the database and creates templates for each table. The constructed model, as you might assume, has a feature for each field in the table. There are a couple of exceptions in inspectDB’s field-name output:

Unless the inspected column type cannot be translated to the model field type, the text field use instead, with the comment ‘This field type is a predict’ added by Python. In the created model,  next to the field. Verified fields may be based on INSTALLED APPS applications. Django.contrib.postgres, for example, includes validation for a variety of PostgreSQL-specific field types. The comment ‘Python is a reserved word, hence the field name has been modified’  added by InspectDB Python. The field is nearby.

Last Thoughts

If we’re utilizing Django’s standard SQLite data, they may remove the db. sqlite3 folder and now all of the changes files within all of the apps. Another approach is to clean the entire database using Django’s manage.py function.


Please enter your comment!
Please enter your name here