Django:我如何使用我的模型类与Django外部的数据库进行交互?

时间:2008-12-20 07:48:16

标签: python django django-models

我想编写一个使用Django应用程序模型与我的数据库交互的脚本。但是,我希望能够从命令行或通过cron运行此脚本。我需要导入什么才能允许这样做?

3 个答案:

答案 0 :(得分:15)

您需要设置Django环境变量。这些告诉Python你的项目在哪里,以及设置模块的名称是什么(设置模块中的项目名称是可选的):

import os

os.environ['PYTHONPATH'] = '/path/to/myproject'
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'

现在您应该可以访问模型了:

from myproject.models import MyModel

all_my_models = MyModel.objects.all()

答案 1 :(得分:13)

首选方法应该是添加custom command,然后将其作为任何其他django-admin运行(不要与django.contrib.admin混淆)命令:

./manage.py mycustomcommand --customarg

设置DJANGO_SETTINGS_MODULE只应在自定义命令不可行时使用。

答案 2 :(得分:5)

根据您的具体需求,django-command-extensions可能会为您节省一些时间。要按原样运行任何脚本而不弄乱环境变量,只需输入:

./manage.py runscript path/to/my/script.py

django-command-extensions还具有将脚本自动化为cron作业的命令,这是您提到的您想要做的事情。

如果你是一个更加坚果类型的人,你可以查看这个very detailed post概述如何使“独立”django脚本从cron作业和诸如此类的东西运行。