我需要从Django shell中执行一个Python脚本。我试着:

./manage.py shell << my_script.py

但这并没有起作用。它只是在等我写点什么。


当前回答

我迟到了,但我希望我的回答能帮助到别人:你可以在你的Python脚本中这样做:

步骤1:导入

import mysite.asgi

step2:需要执行一个Python脚本,只需输入:

python test.py

test.py文件是这样的:

import mysite.asgi

from polls.models import GMD_TABLE
print ( [obj.gt_GMD_name for obj in GMD_TABLE.objects.all()] )

最后:结果将是:

['ISHWARDI', 'JHENAIDHA', 'HVDC CIRCLE']

GMD_TABLE的值['ISHWARDI', 'JHENAIDHA', 'HVDC CIRCLE']在哪里

其他回答

django shell是在django环境中执行python模块的好方法,但是手动导入模块和执行函数并不总是那么容易和烦人,尤其是在没有自动补全的情况下。为了解决这个问题,我创建了一个小型shell脚本“runscript.sh”,它允许您充分利用Linux控制台的自动完成功能和日志历史记录。

注意:拷贝runscript.sh到根项目并设置执行权限(chmod +x)

例如: 我想在myapp/do_folder/ do_things .py模块中运行名为show(a, b, c)的python函数

标准的django方式(manage.py shell):

python3 manage.py shell
 > from myapp.do_folder import do_somethings
 > do_somethings.show("p1", "p2"  , 3.14159)

使用脚本(runscript.sh):

./runscript.sh myapp/do_folder/do_somethings.py show p1 p2 3.14159

脚本的参数数量不受限制。但是只支持基本类型的参数(int, float, string)

迟到了。但这可能对某些人有帮助。

你只需要安装好脚本和django扩展。

只需运行django_extensions中可用的shell_plus,并导入您所编写的脚本。

如果你的脚本是scpt.py,并且它在foll文件夹中,你可以像下面这样运行脚本。

python manage.py shell_plus

然后在shell中导入脚本,如下所示。

>>> from fol import scpt

如果IPython可用(pip install IPython),那么./manage.py shell将自动使用它的shell,然后你可以使用神奇的命令%run:

%run my_script.py

首先检查你的文件。

py manage.py

如果显示您的文件

[contracts]
category_load

现在您可以通过输入powershell(terminal)来运行.py文件

py manage.py category_load

注意,这个方法在django的最新版本中已经被弃用了!(> 1.3)

另一个答案是,您可以将它添加到my_script.py的顶部

from django.core.management import setup_environ
import settings
setup_environ(settings)

然后用python在settings。py目录下执行my_script.py,但这有点棘手。

$ python my_script.py