如何让Django中的syncdb自动运行?

1 投票
4 回答
674 浏览
提问于 2025-04-16 17:11

当我有一个可以上传文件的界面时,我希望把这个文件存储到数据库里。要做到这一点,我需要运行一个叫做syncdb的命令。不过到目前为止,我只知道怎么在Python命令行里手动运行python manage.py syncdb。那我该怎么做才能在我上传数据的时候让它自动运行呢?

4 个回答

1

每次上传文件都调用 syncdb 本身就是不对的,不过我还是来回答你的问题。要在代码里调用 syncdb 的话,可以这样做:

from django.core.management.commands.syncdb import Command as SyncDbCommand
SyncDbCommand().handle_noargs()
1

你可以随时调用

os.system('python /path/manage.py syncdb')

这应该会运行你的同步数据库的过程,不过,我觉得有更好的方法可以解决这个问题,而根本不需要使用同步数据库。

哦,对了,你需要使用一个标志,这样它会对所有问题回答“是”。

3

这是一种稍微有点小技巧的方法:

import sys
sys.argv.append('syncdb')

from django.core.management import execute_manager
import settings # Your project's settings. Assumed to be in the same directory. 

execute_manager(settings)    

撰写回答