Amy*_*yth 14 django json command call dumpdata
我试图使用该call_command方法来调用dumpdata command.手动,我按如下方式使用它将数据保存到文件中.
python manage.py dumpdata appname_one appname_two > /path/to/save/file.json
Run Code Online (Sandbox Code Playgroud)
它保存了json文件.现在,我处于需要使用该call_command方法调用此命令的情况.
我可以使用以下命令从命令打印出json:
from django.core.management import call_command
call_command('dumpdata', 'appname_one', 'appname_two')
Run Code Online (Sandbox Code Playgroud)
有没有办法可以将给定的数据保存到文件中,就像我们从命令行那样做?
Amy*_*yth 18
不得不重定向sys.stdout到文件,以实现上述目标.就像是.
import sys
from django.core.management import call_command
sysout = sys.stdout
sys.stdout = open('filename.json', 'w')
call_command('dumpdata', 'appname_one', 'appname_two')
sys.stdout = sysout
Run Code Online (Sandbox Code Playgroud)
mga*_*bed 12
更好的方法是使用Django的内置stdout重定向作为命令模块.请参阅此处的文档.
如果要在将流发送到文件之前对其进行操作,还可以将其传递给StringIO缓冲区:
import os
from cStringIO import StringIO
from django.core import management
def create_fixture(app_name, filename):
buf = StringIO()
management.call_command('dumpdata', app_name, stdout=buf)
buf.seek(0)
with open(filename, 'w') as f:
f.write(buf.read())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9697 次 |
| 最近记录: |