我想要达到的目标:
我想创建一个 python 脚本来从 CLI 停用数据库中的 Django 用户。我想出了这个:
$ sudo python manage.py shell
>>> user = User.objects.get(username=FooBar)
>>> user.is_active = False
>>> user.save()
>>> exit()
当我在命令后手动输入命令时,上面的代码有效。但是,我想将执行命令放在一个 .py 脚本中,例如
$ sudo python script.py
现在我尝试了不同的方法:
os.system("command1 && command2 && command3")
subprocess.Popen("command1 && command2 && command3", stdout=subprocess.PIPE, shell=True)
问题:
这不起作用!我认为这个问题就在这里,因为 Python 一直等到打开的 Django shell(第一个命令)完成,而这永远不会。它不执行脚本中的其余命令,因为第一个命令将其置于保持状态。
subprocess.popen
可以在 shell 中执行命令,但只能在 Python shell 中执行,我想使用 Django shell。
任何人都知道如何使用 .py 脚本访问 Django shell 以执行自定义代码?