项目背景:
项目使用的是sqlite数据库,要求备份除了网络表之外的所有数据
实施方案:
python3 manage.py dumpdata --exclude network.TRoute --indent 2 --format json > aq3.json
方案操作结果是:
查看aq3.json如下:
图一
问题:
发现导出的json文件总是多了一行sqlite数据库的路径,原以为是dumpdata 故意加的来记录sqlite数据库路径的,但是,当python3 manage.py loaddata aq3.json的时候,总是提示文件错误,提示错误信息如下:
Traceback (most recent call last):
File “/usr/local/lib/python3.6/dist-packages/Django-2.1.1-py3.6.egg/django/core/serializers/json.py”, line 68, in Deserializer
objects = json.loads(stream_or_string)
File “/usr/lib/python3.6/json/init.py”, line 354, in loads
return _default_decoder.decode(s)
File “/usr/lib/python3.6/json/decoder.py”, line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File “/usr/lib/python3.6/json/decoder.py”, line 357, in raw_decode
raise JSONDecodeError(“Expecting value”, s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
这样看来肯定是文件格式出问题了,但是仔细想想这是manage.py dumpdata 出来的数据,为啥出这种问题啊,再说了,manage.py这个文件也知道db文件的路径,为啥还要存一下啊,这是就去看了一下项目的setting文件,发现db的配置如下:
发现多了一行打印,去掉这个打印之后导出的文件不再有图一种的db文件路径了,然后再执行python3 manage.py loaddata aq3.json的时候也不会出错了,我类个神呢,竟然会出这种问题
反问:是不是我level太低了,setting不能有print,还是这是django的bug,希望大神来指点