使用django和south时如何初始化django数据库

发布于 2024-11-14 08:31:34 字数 654 浏览 3 评论 0原文

我尝试编写一个脚本来重置并重新初始化新的 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

不要要求我忽略命令的返回代码,我想要一个能够正确处理错误代码的解决方案。

I try to write a script that will reset and reinitialize the database for a new django application. In order to detect any error I want to check the return code of each command.

#! /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')

My problem is that I wasn't able to find a way to safely re-initialize the database. Running migrate fails because it requires syncdb and syncdb fails because it requires migrate.

Do not ask me to ignore the return codes from the commands, I want a solution that is able to properly deal with error codes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幸福丶如此 2024-11-21 08:31:34

您使用 sys.exit() 的方式不正确。您可以引发异常(“错误消息”)

此外,有关您所看到内容的错误消息将有助于更好地回答您的问题。

是否:

./manage.py syncdb --migrate --noinput

解决了您的问题?

也许你应该检查:

if ret != 0:
    raise Exception("error")

You're using sys.exit() improperly. You could raise Exception("error message").

Also, an error message as to what you're seeing would be helpful to better answer your question.

Does:

./manage.py syncdb --migrate --noinput

solve your issue?

Perhaps you should be checking:

if ret != 0:
    raise Exception("error")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文