ヒントをあげられると思います この問題について。短いバージョンは次のとおりです。「問題を解決するには、データベース内のデータを手動で変更する必要があります。
長いバージョン:SQLiteでも同様の問題が発生しました。次のテーブルをマッピングしました:
ingredients = Table('ingredients', metadata,
Column('recipe_title', Unicode, ForeignKey('recipes.title'), primary_key=True),
Column('product_title', Unicode, ForeignKey('products.title'), primary_key=True),
Column('amount', Integer, nullable=False),
Column('unit_title', Unicode, ForeignKey('units.title')))
その複合主キーを見ますか?どういうわけか、同じrecipe_title/product_titleのペアで2つの行を挿入することができました。このテーブルのSQLite側に単一の制約がないことを知って驚いた(主キーもフェレインキーもありません-それは単なるバニラテーブルでした)が、それはsqlalchemyのやり方であり、私のビジネス。
次に、これら2つの行を含むpersitedオブジェクトを削除しようとすると、sqlalchemyはその制約に違反していることを確認し、「StaleDataError」をスローしました。最後に、SQLiteテーブルから1つの重複行を手動で削除する必要がありました。