gpt4 book ai didi

python - 为什么我在尝试导入 JSON 时收到 IntegrityError?

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:13 24 4
gpt4 key购买 nike

我正在尝试从 MySQL 数据库导出一些数据并将其导入 PostgreSQL 数据库。这两种模型的描述如下:

class Location(models.Model):
name = models.CharField(max_length=100)

class Item(models.Model):
title = models.CharField(max_length=200)
location = models.ForeignKey(Location)

class Book(Item):
author = models.CharField(max_length=100)

请注意,Book 模型继承自Item 模型。 (另外,我确实意识到 author 确实应该是一个单独的模型 - 但我需要一些简单的东西来演示问题。)我首先尝试使用 dumpdata< 从模型中导出数据命令:

./manage.py dumpdata myapp.location >locations.json./manage.py dumpdata myapp.item >items.json./manage.py dumpdata myapp.book >books.json

The JSON in items.json looks something like this:

{
"fields": {
"title": "Introduction to Programming",
"location": 1
},
"model": "myapp.item",
"pk": 1
}

books.json 中的 JSON 看起来像这样:

{
"fields": {
"author": "Smith, Bob"
},
"model": "myapp.book",
"pk": 1
}

我可以毫无问题地导入 locations.jsonitems.json 但一旦我尝试导入 books.json,我就会运行出现以下错误:

IntegrityError: Problem installing fixture 'books.json': Could not load  myapp.Book(pk=1): null value in column "location_id" violates not-null  constraint
<小时/>

编辑:myapp.books 的架构(根据 PostgreSQL 本身)如下:

# SELECT * FROM myapp_book; item_ptr_id | author-------------+--------(0 rows)

最佳答案

books.json 文件需要包含父模型的所有字段,在您的情况下,需要添加“标题”和“位置”字段(当然还有适当的值)(来自 items.json 文件)。 loaddata 不使用数据库结构(中间包含表和所有内容),但检查模型的实际字段。

为了避免出现重复条目​​,您还必须删除 items.json 文件中 myapp_book 表中原始 mysql 数据库所指向的所有 json 条目。

另一个解决方案是使用 http://pypi.python.org/pypi/py-mysql2pgsql (另请参阅 this question)

关于python - 为什么我在尝试导入 JSON 时收到 IntegrityError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19692555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com