मुझे लगता है कि त्रुटि संदेश सही है:वास्तव में आपके डेटाबेस में आपके पास 2 पंक्तियाँ हैं जो Location
को लिंक करती हैं और Heading
उदाहरण। इस मामले में आपको यह पता लगाना चाहिए कि यह पहली बार में कहां और क्यों हुआ, और इसे दोबारा होने से रोकें
-
सबसे पहले, इस धारणा की पुष्टि करने के लिए, आप अपने डेटाबेस के विरुद्ध निम्न क्वेरी चला सकते हैं:
q = session.query( headings_locations.c.location_id, headings_locations.c.heading_id, sa.func.count().label("# connections"), ).group_by( headings_locations.c.location_id, headings_locations.c.heading_id, ).having( sa.func.count() > 1 )
-
मान लें कि धारणा की पुष्टि हो गई है, ठीक करें इसे अपने डेटाबेस में सभी डुप्लिकेट को मैन्युअल रूप से हटाकर (प्रत्येक के लिए केवल एक छोड़कर)।
-
उसके बाद, एक UniqueConstraint जोड़ें। आपके
headings_locations
. पर टेबल:headings_locations = db.Table('headings_locations', db.Column('id', db.Integer, primary_key=True), db.Column('location_id', db.Integer(), db.ForeignKey('location.id')), db.Column('headings_id', db.Integer(), db.ForeignKey('headings.id')), db.UniqueConstraint('location_id', 'headings_id', name='UC_location_id_headings_id'), )
ध्यान दें कि आपको इसे डेटाबेस में जोड़ने की आवश्यकता है, इसे sqlalchemy
में जोड़ने के लिए पर्याप्त नहीं है मॉडल।
अब कोड जहां गलती से डुप्लीकेट डाला गया है वह अद्वितीय बाधा उल्लंघन अपवाद के साथ विफल हो जाएगा, और आप समस्या की जड़ को ठीक कर सकते हैं।