Par*_*ngh 19 python django django-models django-commands
我想在django中进行转储,而不管我使用的数据库,以后可以加载.命令'dumpdata'非常适用于此,但它是在控制台上打印输出.更多我使用call_command函数调用它,所以我无法将其内容存储在任何变量中,因为它是在控制台上打印输出.
请让我知道如何使用dumpdata或任何其他命令或api将存储转储到文件.
谢谢
Tad*_*eck 27
你只需使用它:
./manage.py dumpdata > data_dump.json
Run Code Online (Sandbox Code Playgroud)
执行该操作后,将data_dump.json在您执行该命令的目录中存在文件.
有多种选择,但您可能已经知道了.您需要知道的是如何将标准输出的输出重定向到某个文件:您可以通过放置>文件名之前执行该操作.
要将某些内容附加到您将使用的文件>>,但由于您从Django转储数据并且输出很可能是JSON,因此您不希望这样(因为它会使JSON无效).
bou*_*leu 23
如果你在Python中使用它调用它,你可以选择一个文件来输入dumpdata的输出call_command,例如:
from django.core.management import call_command
output = open(output_filename,'w') # Point stdout at a file for dumping data to.
call_command('dumpdata','model_name',format='json',indent=3,stdout=output)
output.close()
Run Code Online (Sandbox Code Playgroud)
但是,如果您尝试从命令行调用此命令,例如--stdout=filename.json在dumpdata命令的末尾,则会出现错误manage.py: error: no such option: --stdout.
所以它就在那里,你只需要在Python脚本中而不是在命令行上调用它.如果您希望它作为命令行选项,那么重定向(正如其他人建议的那样)是您最好的选择.
正如文档中提到的,为了转储大型数据集,您可以避免引起问题的部分,并单独处理它们。
以下命令通常有效:
python manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.json
python manage.py loaddata db.json
Run Code Online (Sandbox Code Playgroud)
如果您可以稍后导出排除的数据:
python manage.py dumpdata auth.permission > auth.json
python manage.py loaddata auth.json
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15277 次 |
| 最近记录: |