Supprime toutes les tables et les recrée:
python manage.py sqlclear app1 app2 appN | sed -n "2,$p" | sed -n "$ !p" | sed "s/";/" CASCADE;/" | sed -e "1s/^/BEGIN;/" -e "$s/$/COMMIT;/" | python manage.py dbshell
python manage.py syncdb
Explication:
manage.py sqlclear
- "imprime les instructions SQL DROP TABLE pour le (s) nom (s) d'application donné (s)"
sed -n "2,$p"
- attrape toutes les lignes sauf la première ligne
sed -n "$ !p"
- attrape toutes les lignes sauf la dernière ligne
sed "s/";/" CASCADE;/"
- remplace tous les points-virgules (;) par (CASCADE;)
sed -e "1s/^/BEGIN;/" -e "$s/$/COMMIT;/"
- insère (BEGIN;) comme premier texte, insère (COMMIT;) comme dernier texte
manage.py dbshell
- "Exécute le client de ligne de commande pour le moteur de base de données spécifié dans votre paramètre ENGINE, avec les paramètres de connexion spécifiés dans vos paramètres USER, PASSWORD, etc."
manage.py syncdb
- "Crée les tables de base de données pour toutes les applications dans INSTALLED_APPS dont les tables n'ont pas déjà été créées"
Dépendances:
Crédits:
@Manoj Govindan et @Mike DeSimone pour sqlclear canalisés vers dbshell
@jpic pour 'sed "s /"; / "CASCADE; /"'