Credo di poter dare un suggerimento su questo problema. La versione breve è:"Probabilmente dovrai modificare manualmente i dati nel Database per risolvere il problema".
La versione più lunga:ho avuto un problema simile con SQLite. Ho mappato la seguente tabella:
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')))
vedi quella chiave primaria composita? In qualche modo sono riuscito a inserire due righe con la stessa coppia ricetta_titolo/titolo_prodotto. Sono rimasto sorpreso di scoprire che non c'era un solo vincolo sul lato di SQLite per questa tabella (nessuna chiave primaria, nessuna chiave fereign - era solo una semplice tabella vanilla), ma beh - è così che va sqlalchemy, non il mio affari.
Quindi, quando ho provato a eliminare un oggetto persistente che coinvolge quelle due righe, sqlalchemy ha visto che i suoi vincoli erano stati violati e ha lanciato "StaleDataError". Alla fine ho dovuto rimuovere manualmente una riga duplicata dalla tabella SQLite.