Je suppose que je peux donner un indice sur ce problème. La version courte est :"Vous devrez probablement modifier manuellement les données de la base de données pour résoudre le problème".
La version plus longue :j'ai eu un problème similaire avec SQLite. J'ai fait mapper le tableau suivant :
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')))
voir cette clé primaire composite ? J'ai en quelque sorte réussi à insérer deux lignes avec la même paire de titre_recette/titre_produit. J'ai été surpris de découvrir qu'il n'y avait pas une seule contrainte du côté de SQLite pour cette table (pas de clé primaire, pas de clé étrangère - c'était juste une simple table vanille), mais bon - c'est ainsi que va sqlalchemy, pas mon entreprise.
Ensuite, lorsque j'ai essayé de supprimer un objet persistant impliquant ces deux lignes, sqlalchemy a vu que ses contraintes étaient violées et il a lancé le 'StaleDataError'. Enfin, je n'ai eu qu'à supprimer manuellement une ligne dupliquée de la table SQLite.