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 个键:pkmodelfields(其余的都是里面)。

该页面中有一个链接指向 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() 的情况下,视图必须是可调用的或列表/元组 [重复]