Django dumpdata 生成无效的 json 格式文件
Posted
技术标签:
【中文标题】Django dumpdata 生成无效的 json 格式文件【英文标题】:Django dumpdata generates invalid json format file 【发布时间】:2018-08-11 08:43:33 【问题描述】:我正在使用 Django1.11。我想从 sqlite 迁移到 PostgreSQL。所以我需要从 Sqlite 转储数据并加载到 PostgreSQL。 我用
生成转储数据python3 manage.py dumpdata > db.json
我已将 db 设置更改为 PostgreSQL 并做到了
python3 manage.py loaddata db.json
得到了这个错误。
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
所以我使用hexdump
并尝试了。
raise JSONDecodeError("Expecting value", s, err.value) from None
django.core.serializers.base.DeserializationError: Problem installing fixture '/var/lib/myproject/fixtures/db.json': Expecting value: line 1 column 1 (char 0)
我查看了db.json
,它不是有效的 json。
【问题讨论】:
【参考方案1】:我正在研究 linux。问题是在db.json
的开头,附加并突出显示了“尝试使用 Windows 路径”这句话。
当我使用vi command
打开文件时,我认为它不是文件的一部分。但它是文件的一部分。我只是手动删除了这句话。有效。但最后我没有使用python loaddata
进行数据库迁移。如果你使用 pyhton 函数,你可能会遇到很多错误。所以我放弃了在 Django 内置函数上做这件事,并使用了pgloader
。方法简单,没有错误。
【讨论】:
这里的情况类似,但恶意文本是我的 Django 项目的settings.py
打印的一行。任何 Django 打印到 stdout
的东西最终都会在 JSON 输出之前写入文件的头部。
是的 @CameronHyde 我遇到了完全相同的问题,在任意 python 模块中执行的打印语句(对我来说是admin.py
)。我用tail -n +2 db.json > db_cleaned.json
跳过了第一行以上是关于Django dumpdata 生成无效的 json 格式文件的主要内容,如果未能解决你的问题,请参考以下文章
python测试开发django-176.数据库迁移数据(manage.py dumpdata)
python测试开发django-176.数据库迁移数据(manage.py dumpdata)