gpt4 book ai didi

python - 如何通过外部 python 脚本在 Django shell 中执行代码?

转载 作者:IT王子 更新时间:2023-10-29 00:17:40 27 4
gpt4 key购买 nike

我想要实现的目标:

我想创建一个 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(第一个命令)完成,而这是永远不会完成的。它不会执行脚本中的其余命令,因为第一个命令将其置于 Hold 状态。

subprocess.popen 可以在 shell 中执行命令,但只能在 Python shell 中执行,我想使用 Django shell。

有人知道如何使用 .py 脚本访问 Django shell 以执行自定义代码吗?

最佳答案

首先,您不应该使用 sudo 访问您的 Python shell。无需以 root 身份运行。

其次,创建从命令提示符运行的脚本的方法是编写自定义 manage.py 脚本,这样您就可以运行 ./manage.py deactivate_usersthe documentation 中的完整说明.

关于python - 如何通过外部 python 脚本在 Django shell 中执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34591729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com