Question: `python manage.py flush` removes data from the entire project. I would like to be able to do `python manage.py flush agivenapp` How can I do this?

Answer: 
You can do this with the `migrate` command which takes two positional arguments:

> 
> Updates database schema. Manages both apps with migrations and those without.
> 
> 
> positional arguments:
> 
> 
> **app\_label**  
> 
>  App label of an application to synchronize the state.  
> 
> **migration\_name**  
> 
>  Database state will be brought to the state after that
>  migration. Use the name "zero" to unapply all migrations.
> 
> 
> 

So running a migrate zero followed by a migrate will clear only the data for the given app.

```
$ python manage.py migrate ${APPNAME} zero
$ python manage.py migrate ${APPNAME}    

```
I also needed something to empty only certain apps. I came up with this solution. This worked for mysql. It could be that the code needs to be changed for other databases.

The main idea is not to do the whole 'flush'. Instead I get only what I want, with a grep from 'sqlflush'. You can also put everything in one line. For readability I split it up. 

```
BEGIN="BEGIN; SET FOREIGN_KEY_CHECKS = 0;"
TRUNCATE=`./manage.py sqlflush |egrep " \\\`app1_| \\\`app2_"`
END="SET FOREIGN_KEY_CHECKS = 1; COMMIT;"

echo $BEGIN $TRUNCATE $END | ./manage.py dbshell

```