Saya kira saya bisa memberikan petunjuk pada masalah ini. Versi singkatnya adalah:"Anda mungkin harus mengubah data di Database secara manual untuk menyelesaikan masalah".
Versi yang lebih panjang:Saya memiliki masalah serupa dengan SQLite. Saya telah memetakan tabel berikut:
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')))
lihat kunci primer komposit itu? Saya entah bagaimana berhasil memasukkan dua baris dengan pasangan resep_judul/judul produk yang sama. Saya terkejut mengetahui bahwa tidak ada batasan tunggal di sisi SQLite untuk tabel ini (tidak ada kunci utama, tidak ada kunci fereign - itu hanya tabel vanilla biasa), tapi yah - begitulah sqlalchemy berjalan, bukan milik saya bisnis.
Kemudian ketika saya mencoba menghapus objek tetap yang melibatkan dua baris itu, sqlalchemy melihat bahwa batasannya dilanggar dan melemparkan 'StaleDataError'. Akhirnya saya hanya perlu menghapus satu baris duplikat secara manual dari tabel SQLite.