将Django数据库导出为YAML文件

13

我知道你可以轻松地将一个YAML文件导入到Django数据库中(例如在启动项目之前填充数据库),但是如何做相反的操作(即将整个数据库保存为单独的.yaml文件)。

我看到有一种方法可以将一个单独的表导出到一个文件中:

YAMLSerializer = serializers.get_serializer("yaml")
yaml_serializer = YAMLSerializer()
with open("file.yaml", "w") as out:
    yaml_serializer.serialize(SomeModel.objects.all(), stream=out)

但我需要在完整的数据库上进行操作(这个数据库有许多表格,它们之间存在复杂的关系)。

我可以编写一个脚本来完成这项任务,但我不想重复做已经完成的工作,而且我也不知道如何更好地完成这项任务,以便Django在读取后没有困难。

到目前为止,我一直在使用SQLITE3数据库引擎。

有什么建议吗?

1个回答

26

你需要使用dumpdata管理命令。

pip install pyyaml
python manage.py dumpdata --format=yaml > /path/to/dump_file.yaml

1
很酷的是,yaml也可以作为fixture使用,使用loaddata即可。 - Csaba Toth
5
不要忘记先运行 pip install pyyaml。否则会出现 CommandError: Unable to serialize database: No module named yaml 的错误。 - Hexatonic
如果你只使用 python manage.py dumpdata > test.json,它会输出 JSON 格式,你不需要安装 PyYAML。 - FrankZhu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接