Django 1.9 加载数据错误
Posted
技术标签:
【中文标题】Django 1.9 加载数据错误【英文标题】:Django 1.9 loaddata errors 【发布时间】:2016-07-12 20:17:10 【问题描述】:ubuntu 15.10 venv python 3.4 / django 1.9
命令:
python manage.py loaddata flight_data.json(yaml)
错误:
json: django.core.serializers.base.DeserializationError: 问题 安装夹具 '/home/nerdbox2/django_/logbook/flights/fixtures/flight_data.json': '模型'
yaml: django.core.serializers.base.DeserializationError: 问题 安装夹具 '/home/nerdbox2/django_/logbook/flights/fixtures/flight_data.yaml': '模型'
在尝试了几个 csv->model 包但没有运气之后,我决定根据 Django Docs 为 csv-json 和 csv-yaml 使用在线转换器,但仍然没有运气。我有大约 2100 条记录来填充数据库。
是的,我是菜鸟,但在过去的 3 天里,我真的把它打死了!
任何帮助将不胜感激!
model、json 和 yaml 在下面的评论中
【问题讨论】:
你能告诉我们你试图加载的json的模型和内容吗? json 1 of ~2100 原始文件有尾括号:pastebin.com/1ewEDF8Syaml:pastebin.com/ppfDsKTxdjango 模型:pastebin.com/832EnXew 嗯。在这三天里,您是否尝试过阅读loaddata
的文档?因为您会发现,loaddata
只能加载由命令dumpdata
生成的夹具,但您的数据格式不同。尝试通过dumpdata
转储一些内容以查看数据的外观并相应地编辑您的固定装置,或创建自定义命令来加载您拥有的数据格式。
是的,我确实读过它,那里有 1 页。我不清楚 loaddata 仅适用于 dumpdata 生成的数据这一事实。我还尝试了几个应用程序/包来导入 CSV 数据。似乎会有一种“更简单”的方式。感谢您的回复!
【参考方案1】:
有时,应用程序中的某些模型可能会导致序列化失败。一旦您运行 dumpdata 命令,Django 会将此类模型指示为警告。确保使用以下命令排除此类模型(或在某些情况下排除整个应用程序):
./manage.py dumpdata --exclude auth.permission > db.json
在这里,我们认为 auth.permission 是您需要删除的表。
如果你使用数据库转储来加载新的数据库(在另一个 django 项目中),它可能会导致 IntegrityError(如果你在同一个数据库中加载数据它工作正常)
要解决此问题,请确保通过排除 contenttypes 和 auth.permissions 表来备份数据库:
./manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.json
现在您可以对新数据库使用 loaddata 命令了
./manage.py loaddata db.json
来源:https://coderwall.com/p/mvsoyg/django-dumpdata-and-loaddata
【讨论】:
【参考方案2】:如果您已转储数据库(不包括权限和内容类型),您需要检查 3 个主要内容:
1# 查看你的转储 json 是否是对应 django 序列化的正确键和值,例如:
[
"model": "myDev.person",
"pk": 1,
"fields":
"first_name": "anjan",
"last_name": "thakuri"
,
"model": "myDev.person",
"pk": 2,
"fields":
"first_name": "Swikriti",
"last_name": "Thakuri"
]
确保您有这样的格式,其中包括 3 个键:pk、model 和 fields(其余的都是里面)。
该页面中有一个链接指向 JSON Serialization 格式 102,它提供了更正式和完整的规范。
2#如果你使用自然键,我遇到的常见异常是因为natural key。
你最了解natural key
3#相同的迁移实例(阶段)快速指南***
【讨论】:
以上是关于Django 1.9 加载数据错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 1.9 中删除 DB (sqlite3) 以从头开始?
Python Django 1.9 迁移错误“创建新内容类型时出错...”
Django 1.9 AJAX 表单 CSRF 令牌 403 错误 - “未设置 CSRF cookie”
使用 PostgreSQL 9.5 在 Django 1.9 中执行“python manage.py migrate”时出现错误“django.db.utils.OperationalError”
尝试在 Django 1.9 中迁移——奇怪的 SQL 错误 "django.db.utils.OperationalError: near ")": syntax er
Django 错误遵循教程 b/c 使用 3.1 而不是 1.9 TypeError:在 include() 的情况下,视图必须是可调用的或列表/元组 [重复]