使用大于符号作为参数的Django调用命令

时间:2018-11-13 17:34:05

标签: python django arguments

使用call_command('dumpdata','>','db.json')

时是否可以将“>”作为参数传递

在终端上以python manage.py dumpdata > db.json的形式使用此命令时,一切正常,但是尝试以编程方式使用是在问题发生时。

  

LookupError:未安装带有标签“>”的应用。

具体问题是“如何在>函数中使用call_command自变量。”

但更笼统地说,我在使用call_command函数中处理此符号时是否存在一些误解?

1 个答案:

答案 0 :(得分:1)

您使用子流程PIPE重定向您的输出...您可以将>作为命令传递给子流程调用,但是它将被解释为原义'>'而不是重定向...因此它正在尝试为名为“>”的表转储数据,该表显然不存在您的数据库中

如果只想将转储数据输出到文件,则可以使用-o标志(请参见https://docs.djangoproject.com/en/2.1/ref/django-admin/#cmdoption-dumpdata-output

call_command('dumpdata','-o','db.json')

或直接使用输出重定向,如此处所示(https://docs.djangoproject.com/en/2.1/ref/django-admin/#output-redirection

with open('/path/to/db.json',"wb") as f:
    management.call_command('dumpdata', stdout=f)