Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

SQLAlchemy DELETE त्रुटि आलसी लोड और एक ही रिश्ते के गतिशील संस्करण दोनों होने के कारण होती है

Group.users और Group.users_dynamic संबंध दोनों इस तथ्य को समेटने का प्रयास कर रहे हैं कि User() को प्रबंधित करने में सक्षम होने के साथ-साथ समूह को हटाया जा रहा है। जिन वस्तुओं का वे उल्लेख करते हैं; एक संबंध सफल होता है जबकि दूसरा विफल रहता है, क्योंकि संबद्धता तालिका में पंक्तियाँ पहले ही हटा दी गई थीं। सबसे सीधा समाधान है कि केवल एक समान संबंधों को छोड़कर सभी को केवल देखने के लिए चिह्नित किया जाए:

class Group(Base):
    __tablename__ = 'groups'
    id = Column(Integer, primary_key=True)

    users = relationship('User', secondary=users_groups, lazy='select', backref='groups')
    users_dynamic = relationship('User', viewonly=True, secondary=users_groups, lazy='dynamic')

यदि आप अभी भी चाहते हैं कि दोनों संबंध कुछ हद तक उत्परिवर्तन को संभालें, तो आपको इसे सावधानी से करने की आवश्यकता होगी क्योंकि SQLAlchemy एक ही समय में दो रिश्तों में परिवर्तनों के बीच समन्वय करना नहीं जानता है, इसलिए इस तरह के संघर्ष जारी रह सकते हैं हो (जैसे डबल इंसर्ट, आदि) यदि आप दोनों रिश्तों पर समान परिवर्तन करते हैं। केवल "हटाएं" समस्या का स्वयं ही ध्यान रखने के लिए, आप Group.users_dynamic को निष्क्रिय_deletes=True:

पर सेट करने का भी प्रयास कर सकते हैं।
class Group(Base):
    __tablename__ = 'groups'
    id = Column(Integer, primary_key=True)

    users = relationship('User', secondary=users_groups, lazy='select', backref='groups')
    users_dynamic = relationship('User', passive_deletes=True, secondary=users_groups, lazy='dynamic')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में पिछले 7 दिनों के रिकॉर्ड कैसे प्राप्त करें

  2. Mysql संग्रहीत कार्यविधि मापदंडों को कैसे सूचीबद्ध करें

  3. MySQL में किसी निश्चित वर्ण से पहले/बाद में सब कुछ कैसे चुनें - SUBSTRING_INDEX ()

  4. MySQL में सब स्ट्रिंग्स के बीच टेक्स्ट निकालना

  5. प्रमाणीकरण प्लगइन 'caching_sha2_password' समर्थित नहीं है