gpt4 book ai didi

python - 在多对多关系中添加记录会导致 sqlalchemy 中出现重复错误

转载 作者:行者123 更新时间:2023-11-28 19:25:17 24 4
gpt4 key购买 nike

我有 2 个表:BookAuthor 和辅助表 books_authors,类似于此代码:

book=Book()
for author in authors:
a = Author()
a.books.append(book)
session.merge(a) #1

session.merge(book) #2
session.commit()

这段代码会导致错误

sqlalchemy.exc.IntegrityError: 
(IntegrityError) (1062, "Duplicate entry '1234' for key 'id'")
'INSERT INTO `Book` (title, id) VALUES (%s, %s)' ('test', u'1234')

我猜这是因为合并进行了两次(#1、#2)。

所以我决定删除#1。不会出现错误,但表 Author 中什么也没有出现。当我决定删除 #2 时,表格 Book、Author 和 books_authors 填写正确,只要只有一位作者被添加到书中。

更多作者导致与之前的错误类似。

#2 合并不合并添加的作者是否正常?它只在一个方向上起作用吗?如果是,如何通过合并两个作者条目来避免重复书籍条目?

最佳答案

我不熟悉您的应用程序代码,但您尝试的要点应该是这样的:

插入图书记录,如果它不存在的话。

插入作者记录,如果它不存在的话。

如果 book_authors 记录不存在,则插入它。

要防止重复条目,请使用这种类型的语法。

insert into yourtable
(field1, field2, etc)
select distinct value1, value2, etc
from some_small_table
where not exists
(subquery to check for existing records)

根据您的数据库引擎,可能不需要 from some_small_table 部分。

关于python - 在多对多关系中添加记录会导致 sqlalchemy 中出现重复错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791878/

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