मुझे लगता है कि मैं एक संकेत दे सकता हूं इस समस्या पर। संक्षिप्त संस्करण है:"समस्या को हल करने के लिए आपको शायद डेटाबेस में डेटा को मैन्युअल रूप से संशोधित करना होगा"।
लंबा संस्करण:मुझे 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')))
वह समग्र प्राथमिक कुंजी देखें? मैं किसी तरह एक ही नुस्खा_शीर्षक/उत्पाद_शीर्षक जोड़ी के साथ दो पंक्तियों को सम्मिलित करने में कामयाब रहा। मुझे यह जानकर आश्चर्य हुआ कि इस तालिका के लिए SQLite के पक्ष में एक भी बाधा नहीं थी (कोई प्राथमिक कुंजी नहीं, कोई फ़ारेन कुंजी नहीं - यह सिर्फ एक सादा वेनिला तालिका थी), लेकिन ठीक है - जिस तरह से sqlalchemy जाता है, मेरा नहीं व्यापार।
फिर जब मैंने उन दो पंक्तियों को शामिल करते हुए एक स्थायी वस्तु को हटाने की कोशिश की, तो sqlalchemy ने देखा कि इसकी बाधाओं का उल्लंघन किया गया था और इसने 'StaleDataError' को फेंक दिया। अंत में मुझे सिर्फ SQLite तालिका से मैन्युअल रूप से एक डुप्लिकेटिंग पंक्ति को हटाना पड़ा।