如何在 Django 中制作数据库转储文件

新手上路,请多包涵

我想在 django 中进行转储,而不管我使用的是什么数据库,以后可以加载。命令“dumpdata”非常适合此操作,但它会在控制台上打印输出。此外,我使用 call_command 函数调用它,因此我无法将其内容存储在任何变量中,因为它正在控制台上打印输出。

请让我知道如何使用 dumpdata 或任何其他命令或 api 将转储存储到文件中。

谢谢

原文由 Paritosh Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 410
2 个回答

如果您使用 call_command 在 Python 中调用它,您 可以 选择一个文件将 dumpdata 的输出放入其中,例如:

 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()

但是,如果您尝试在 dumpdata 命令末尾使用例如 --stdout=filename.json 从命令行调用它,它会给出错误 manage.py: error: no such option: --stdout

它就在那里,您只需在 Python 脚本中而不是在命令行中调用它。如果你想把它作为命令行选项,那么重定向(正如其他人所建议的那样)是你最好的选择。

原文由 bouteillebleu 发布,翻译遵循 CC BY-SA 3.0 许可协议

你就这样使用它:

 ./manage.py dumpdata > data_dump.json

在该操作之后,执行该命令的目录中将有 data_dump.json 文件。

随之而来的有多种选择,但您可能已经知道了。您需要知道的是如何 将输出从标准输出重定向到某个文件:您通过在文件名前 > 来执行该操作。

要将某些内容附加到文件,您可以使用 >> ,但由于您从 Django 转储数据并且输出很可能是 JSON,因此您不会想要它(因为它会使 JSON 无效)。

原文由 Tadeck 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题