Suite à ce Django par exemple tutotrial ici: http://lightbird.net/dbe/todo_list.html
Le tutoriel dit:
«Cela change la disposition de nos tables et nous devrons demander à Django de réinitialiser et recréer les tables:
manage.py reset todo; manage.py syncdb
"
cependant, quand je cours 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 la base de données?
La commande: python manage.py sqlclear todo
renvoie 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 j'ai exécuté à python manage.py sqlclear todo
nouveau, ce qui a entraîné cette erreur:
$ python manage.py sqlclear todo
- NameError: name 'admin' is not defined
Réponses:
reset
a été remplacé parflush
Django 1.5, voir:la source
Il semble que la réponse «flush» fonctionnera dans certains cas, mais pas dans tous. J'avais besoin non seulement de vider les valeurs de la base de données, mais de recréer correctement les tables. Je n'utilise pas encore de migrations (débuts) donc j'avais vraiment besoin de supprimer toutes les tables.
J'ai trouvé deux façons de supprimer toutes les tables, les deux nécessitent autre chose que le noyau django.
Si vous êtes sur Heroku, supprimez toutes les tables avec pg: reset:
Si vous pouvez installer les extensions Django, il existe un moyen de faire une réinitialisation complète:
la source
INSTALLED_APPS
danssettings.py
.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".
python ./manage.py reset_db
Le simple fait de vider les tables ne corrigeait pas une erreur persistante survenue lors de la suppression d'objets. Faire un reset_db a résolu le problème.
la source
--router
argument, peut-être que c'est facultatif maintenant, cinq ans plus tard? :)si vous utilisez Django 2.0 Alors
marchera
la source
Si vous souhaitez nettoyer toute la base de données, vous pouvez utiliser: python manage.py flush Si vous souhaitez nettoyer la table de base de données d'une application Django, vous pouvez utiliser: python manage.py migrate appname zero
la source
Avec django 1.11, supprimez simplement tous les fichiers de migration du
migrations
dossier de chaque application (tous les fichiers sauf__init__.py
). ensuitepython3 manage.py makemigrations
.python3 manage.py migrate
.Et voilla, votre base de données a été complètement réinitialisée.
la source
python3 manage.py makemigrations
etpython3 manage.py migrate
s'en chargera, au moins dans django 2.0Pour moi, cela a résolu le problème.
la source
Juste un suivi de la réponse de @ LisaD .
À partir de 2016 (
Django 1.9
), vous devez taper:Cela vous donnera une nouvelle base de données dans Heroku.
la source
Supprimez simplement manuellement votre base de données. Assurez-vous de créer d'abord une sauvegarde (dans mon cas, db.sqlite3 est ma base de données)
Exécutez cette commande
manage.py migrate
la source
ancien contenu de base de données supprimé,
N'oubliez pas de créer un nouveau superutilisateur:
la source