2012-05-15 17 views
21

Ci sono Django comandi cheChe cos'è il comando django per cancellare tutte le tabelle?

A. Elimina tutte le tabelle

B. cancellare tutti i dati in tutte le tabelle

C. Creare tutte le tabelle, come definito nel modello?

Non riesco a trovarli adesso!

E da comandi intendo quelle piccole cose che sono come

runserver 

ecc

+1

check this out - http://stackoverflow.com/questions/3414247/django-drop-all-tables- from-database – zubinmehta

+0

Ordine strano: nel passaggio A si eliminano tutte le tabelle. Nel passaggio B si desidera eliminare tutti i dati in tutte le tabelle. Ma non c'è un solo tavolo in quanto tutte le tabelle sono state eliminate nel passaggio A. Non capisco :-) – guettli

+1

@guettli ha ha! Penso che l'OP non abbia considerato ordini significativi, voleva solo conoscerli tutti. –

risposta

29

A. Eliminare tutte le tabelle

manage.py sqlclear stamperà l'istruzione sql per eliminare tutti i tavoli

B. cancellare tutti i dati in tutte le tabelle

manage.py flush ritorna il database alla stato in cui era subito dopo syncdb è stato eseguito

C. Creare tutte le tabelle, come definito nel modello?

manage.py syncdb Crea le tabelle del database per tutte le app in INSTALLED_APPS le cui tabelle non sono già state create.

Vai a questa pagina per un riferimento di tutti i comandi: https://docs.djangoproject.com/en/dev/ref/django-admin/

ma si dovrebbe sicuramente considerare di usare south come qualcuno già menzionato. È il modo migliore per gestire il tuo database.

NB: syncdb è deprecato in favore di migrare, dal momento che Django 1.7.

+4

Il problema con questo è che 'manage.py sqlclear' da solo non funzionerà. Dovrai passarlo singolarmente per ogni nome di app, e se usi 'syncdb', non rifletterà alcuna modifica nei modelli esistenti (motivo per cui è consigliato south). –

+0

eh, per i miei appunti "reset" sarà chiaro l'intero db (tabelle goccia ecc) – bharal

+2

'syncdb' è deprecato in favore di' migrate', poiché Django 1.7. –

3

mi consiglia di utilizzare django-sud. Ti permette di sincronizzare i tuoi modelli con il tuo database non solo quando tu aggiungi un campo, ma anche quando elimini un campo/modello. Trovo davvero che sia una componente essenziale della costruzione di un sito Django. Una volta installato, è possibile eseguire un comando come:

./manage.py migrano app a zero

Potete saperne di più qui: http://south.aeracode.org/docs/about.html

10

Se avete le librerie client installate per il database, è possibile eseguire questo:

python manage.py sqlflush | python manage.py dbshell

Ciò non eliminare le tabelle, ma li tronca.

Non c'è un comando che faccia tutto in una volta, ma questo "one liner" farà cadere tutti i tavoli e poi li ricrea. Funzionerebbe solo se tu fossi in esecuzione su un sistema che fornisce queste utilità nella shell.

echo 'from django.conf import settings; print settings.INSTALLED_APPS; quit();' | python manage.py shell --plain 2>&1 | tail -n1 | sed -r "s|^.*\((.*)\).*$|\1|; s|[',]| |g; s|django\.contrib\.||g" | xargs python manage.py sqlclear | python manage.py dbshell && python manage.py syncdb

1

sono stato in grado todrop mie tabelle. Esegui

python manage.py sqlclear appname 

Prendere nota dei comandi dati. Quindi eseguire

python manage.py dbshell 

Aggiungere i comandi indicati nel primo passaggio. linea per linea. Quando hai finito, digita ".exit" (per SQlite3). Risincronizza il tuo DB e dovresti essere pronto. Per sicurezza, controlla le tabelle con:

python manage.py shell 
>>> from yourapp import yourclasses 
>>> yourviews.objects.all() 

dovrebbe restituire un []. Spero che aiuti.

8

manage.py sqlclearmanage.py reset è in grado di eliminare tutte le tabelle contemporaneamente, entrambi richiedono un parametro appname.

si dovrebbe dare un'occhiata a Django Extensions, dà accesso al manage.py reset_db così come many other comandi di gestione utili.

3

E un oneliner più semplice far cadere tutte le tabelle per Django 1.5+:

python2 manage.py sqlflush | sed 's/TRUNCATE/DROP TABLE/g'| python2 manage.py dbshell 
Problemi correlati