在Django中以编程方式同步数据库

12 投票
2 回答
1692 浏览
提问于 2025-04-15 22:23

我正在尝试从一个视图中同步我的数据库,类似这样:

from django import http
from django.core import management

def syncdb(request):
    management.call_command('syncdb')
    return http.HttpResponse('Database synced.')

问题是,这会在开发服务器上阻塞,因为它会在终端里要求用户输入。请问我该如何传递 '--noinput' 这个选项,以防止它问我任何问题?

我有其他方法来标记用户为超级用户,所以不需要用户输入,但我确实需要以编程的方式调用 syncdb(和 flush),而不通过 ssh 登录到服务器。任何帮助都非常感谢。

2 个回答

4

大概是这样的(至少在Django 1.1版本中):

from django.core.management.commands import syncdb
syncdb.Command().execute(noinput=True)
20

当然可以!请看下面的内容:

在编程中,有时候我们需要让程序做一些重复的事情。为了实现这个目标,我们可以使用“循环”。循环就像是一个指令,让程序不停地执行某个操作,直到满足特定条件为止。

比如说,如果你想让程序打印数字1到10,你可以用循环来实现,而不是一个个写出每个数字。这样不仅省事,还能让代码更简洁。

另外,循环有几种不同的类型,比如“for循环”和“while循环”。“for循环”通常用于知道要重复多少次的情况,而“while循环”则适合在不知道要重复多少次的情况下使用,只要条件满足就继续执行。

总之,循环是编程中非常重要的一个概念,它可以帮助我们更高效地完成任务。

management.call_command('syncdb', interactive=False)

撰写回答