gpt4 book ai didi

django - 使用 get 或 create 导入数据 - 标识错误 1062

转载 作者:行者123 更新时间:2023-12-01 15:28:08 25 4
gpt4 key购买 nike

我正在将数据从 mssql 数据库导入到 mysql。工作,除非遇到前一个条目的 id。 id 是唯一的。我需要获取已经存在的条目,以便将它们放在当天的工作中。错误是
IntegrityError:(1062,“ key 2 的重复条目‘001355338’”)此条目已存在于数据库中。我需要在那天输入它,但不能将它添加到表格中。它已经在那里了。

def handle(self, *args, **options):
#patients_local = Patient.objects.all()
#attendings_local = Attending.objects.all()
connection = pyodbc.connect("XXXXXXXXXXX")
cursor = connection.cursor()
cursor.execute(COMMAND)
rows = cursor.fetchall()
for row in rows:
# get_or_create returns (object, boolean)
p, created = Patient.objects.get_or_create(
first_name = row.Firstname,
middle_name = '',
last_name = row.Lastname,
id = row.id,
)

最佳答案

由于 get_or_create 是使用一系列 AND 进行搜索,我猜您可能有一个患者(或一个患者 ID)具有不同的第一个/中间/最后一个组合。如果没有找到,那很好:get_or_create 创建一个新的并继续,但是当存在重复的 ID 时,它会感到困惑并引发异常。

所以你的表可能看起来像这样:

Firstname | Lastname | Middlename | id
---------------------------------------------
Frank | Stein | | 1
Franklin | Stein | | 1

解决这个问题的方法是使用defaults参数:

Patients.objects.get_or_create(id = row.id,
defaults={'first_name': row.Firstname,
'last_name': row.Lastname,
'middle_name': ''})

您还应该确认在 MySQL 中没有唯一的 Firstname、Lastname 索引。

Firstname | Lastname | Middlename | id
---------------------------------------------
John | Smith | | 1 # John Smith from Jamestown, VA.
John | Smith | | 754567890 # John Smith from StackOverflow

关于django - 使用 get 或 create 导入数据 - 标识错误 1062,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348145/

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