Jak zainicjować bazę danych Django podczas korzystania z Django i South


Próbuję napisać skrypt, który zrzuci i ponownie zainicjuje bazę danych dla nowej aplikacji django. Aby złapać jakikolwiek błąd, chcę sprawdzić kod powrotu każdego polecenia.
#!/bin/env python
import sys, os def execute⌘:
print(cmd)
ret = os.system(cmd)
if not ret:
sys.exit("Last command failed")if __name__ == "__main__":
if os.path.isfile('app.sqlite'):
os.unlink('app.sqlite') execute('python manage.py syncdb --noinput --all') # << this fails
execute('python manage.py migrate --noinput --all')

Moim problemem jest to, że nie mogłem znaleźć sposób na bezpieczne ponowne zainicjowanie bazy danych. Works
Migracja
Fails, ponieważ wymaga SyncDB i
SynCDB
Fail, ponieważ wymaga Migracja .
Nie proś mnie o ignorowanie kodów powrotu z poleceń, chcę rozwiązania, które może poprawnie obsługiwać kody błędów.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nieprawidłowo użyj
sys.exit ()
. Możesz podnieść wyjątek ("komunikat o błędzie") .
Ponadto komunikat o błędzie dotyczący tego, co widzisz, byłby pomocny w lepszej odpowiedzi na Twoje pytanie.
Robi:
./manage.py syncdb --migrate --noinput

rozwiązać twój problem?
Być może powinieneś sprawdzić:
if ret != 0:
raise Exception("error")

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się