私は2つのテーブルを持っています:とセカンダリテーブルBook
で、次のコードに似ています:Author
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')
これはマージが 2 回 (#1、#2) 行われているためだと思います。
だから私は削除することにし#1
ました。エラーは発生しませんが、テーブル Author には何も表示されません。私が remove を決定したとき#2
、本に追加された著者が1人だけである限り、テーブル Book、Author および books_authors は正しく入力されます。
作成者が増えると、前のエラーと同様のエラーが発生します。
#2
マージが追加された著者をマージしないのは正常ですか? 一方向にしか機能しませんか?はいの場合、2 つの著者エントリをマージしてブック エントリを重複させない方法は?