Comment réinitialiser db dans Django? Je reçois une commande 'reset' erreur introuvable

Suivant ce Django par Exemple tutotrial ici: http://lightbird.net/dbe/todo_list.html

Le tutoriel dit:

" cela change la disposition de notre table et nous devrons demander à Django de réinitialiser et recréer des tables:

manage.py reset todo; manage.py syncdb"

Bien, quand je lance manage.py reset todo, j'obtiens l'erreur:

$ python manage.py reset todo                                       
- Unknown command: 'reset'

Est-ce parce que j'utilise sqlite3 et non postgresql?

Quelqu'un Peut-il me dire quelle est la commande pour réinitialiser le base de données?

La commande: python manage.py sqlclear todo retourne l'erreur:

$ python manage.py sqlclear todo    
CommandError: App with label todo could not be found.    
Are you sure your INSTALLED_APPS setting is correct?

J'ai donc ajouté 'todo' à mon INSTALLED_APPS dans settings.py, et a couru python manage.py sqlclear todo à nouveau, résultant en cette erreur:

$ python manage.py sqlclear todo                                      
- NameError: name 'admin' is not defined
67
demandé sur 3cheesewheel 2013-03-16 23:56:10

9 réponses

reset a été remplacé par flush avec Django 1.5, voir:

python manage.py help flush
114
répondu robertklep 2013-03-16 20:00:52

Il semble que la réponse' flush ' fonctionnera pour certains, mais pas tous les cas. J'avais besoin non seulement de vider les valeurs dans la base de données, mais de recréer les tables correctement. Je n'utilise pas encore les migrations (au début), donc j'avais vraiment besoin de laisser tomber toutes les tables.

Deux façons que j'ai trouvées pour supprimer toutes les tables, les deux nécessitent autre chose que Core django.

Si vous êtes sur Heroku, supprimez toutes les tables avec pg:reset:

heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb

Si vous pouvez installer des Extensions Django, il a un moyen de faites une réinitialisation complète:

python ./manage.py reset_db --router=default
27
répondu LisaD 2018-10-03 16:22:32

Similaire à la réponse de LisaD, Django Extensions a une excellente commande reset_db qui supprime totalement tout, au lieu de simplement tronquer les tables comme le fait "flush". Vous devez spécifier un routeur, il peut ressembler à:

python ./manage.py reset_db --router=default

Le simple vidage des tables ne corrigeait pas une erreur persistante survenue lorsque je supprimais des objets. Faire un reset_db a corrigé le problème.

16
répondu aendrew 2013-08-30 22:06:49

Si vous utilisez Django 2.0 Alors

python manage.py flush 

Fonctionnera

10
répondu Vaibhav Gupta 2017-12-16 10:49:23

Avec django 1.11, supprimez simplement tous les fichiers de migration du dossier migrations de chaque application (tous les fichiers sauf __init__.py). Alors

  1. supprimer manuellement la base de données.
  2. créer manuellement la base de données.
  3. Exécuter python3 manage.py makemigrations.
  4. Exécuter python3 manage.py migrate.

Et voilla, votre base de données a été complètement réinitialisée.

7
répondu Gursimran Singh 2017-10-22 07:33:08

Si vous voulez nettoyer toute la base de données, vous pouvez utiliser: python manage.py rincer Si vous souhaitez nettoyer la table de base de données D'une application Django, vous pouvez utiliser: python manage.py migrer appname zéro

5
répondu Abhijeet Padhy 2016-05-13 19:02:44

Pour moi, cela a résolu le problème.

heroku pg:reset DATABASE_URL

heroku run bash
>> Inside heroku bash
cd app_name && rm -rf migrations && cd ..
./manage.py makemigrations app_name
./manage.py migrate
4
répondu yask 2015-07-30 16:46:02

Juste un suivi de la réponse @LisaD.
À partir de 2016 (Django 1.9), vous devez taper:

heroku pg:reset DATABASE_URL
heroku run python manage.py makemigrations
heroku run python manage.py migrate

Cela vous donnera une nouvelle base de données dans Heroku.

2
répondu Jan 2017-05-23 11:54:59

Si vous utilisez des migrations, ce lien a un certain nombre de solutions en fonction du scénario.

1
répondu Kandhan 2017-11-29 12:23:19