我尝试编写一个脚本,为新的django应用程序重置和重新初始化数据库。为了检测任何错误,我想检查每个命令的返回码。
#! /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')
我的问题是我无法找到安全重新初始化数据库的方法。运行migrate
失败,因为它需要syncdb
而syncdb
失败,因为它需要migrate
。
不要让我忽略命令中的返回码,我想要一个能够正确处理错误代码的解决方案。
答案 0 :(得分:2)
您未正确使用sys.exit()
。你可以raise Exception("error message")
。
此外,关于您所看到的内容的错误消息将有助于更好地回答您的问题。
的作用:
./manage.py syncdb --migrate --noinput
解决您的问题?
也许你应该检查:
if ret != 0:
raise Exception("error")