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

slqlalchemy UniqueConstraint VS Index(unique=True)

मुख्य अंतर यह है कि जबकि Index कोड> एपीआई तालिका परिभाषा के बाहर एक अनुक्रमणिका को परिभाषित करने की अनुमति देता है जब तक कि यह पारित SQL संरचनाओं के माध्यम से तालिका को संदर्भित कर सकता है, एक UniqueConstraint और सामान्य रूप से बाधाएं orm-extension">तालिका परिभाषा में इनलाइन परिभाषित किया जाना चाहिए :

समझने वाली बात यह है कि घोषणात्मक वर्ग के निर्माण के दौरान एक नया तालिका बनाया गया है, यदि स्पष्ट __table__ . पारित नहीं किया गया है . आपके उदाहरण मॉडल वर्ग में UniqueConstraint उदाहरण एक वर्ग विशेषता के लिए बाध्य है, लेकिन घोषणात्मक आधार में निर्मित तालिका में बाधाएं शामिल नहीं हैं गुणों से उदाहरण। आपको इसे तालिका तर्कों में पास करना होगा:

class MyTable(DeclBase):
    __tablename__ = 'my_table'
    ...
    # A positional argument tuple, passed to Table constructor
    __table_args__ = (
        UniqueConstraint(attr_2, attr_3, name='my_table_uidx'),
    )

ध्यान दें कि आपको बाधा नाम को कीवर्ड तर्क के रूप में पास करना होगा। आप Table.append_constraint() , यदि तालिका बनाने के किसी भी प्रयास से पहले कॉल किया जाता है:

class MyTable(DeclBase):
    ...

MyTable.__table__.append_constraint(
    UniqueConstraint('attr_2', 'attr_3', name='my_table_uidx'))



  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 के अंदर एक संग्रहीत कार्यविधि के परिणाम के लिए एक चर सेट करने के लिए?

  2. मैं कॉलम नामों के रूप में उपयोग किए जाने वाले आरक्षित शब्दों से कैसे बचूं? MySQL/तालिका बनाएं

  3. PHP में लॉगिन पेज में SQL इंजेक्शन को रोकना

  4. त्रुटि:विजुअल स्टूडियो प्रोजेक्ट में MySQL-डेटा स्रोत जोड़ते समय तालिका 'mysql.proc' मौजूद नहीं है

  5. संग्रहीत प्रक्रिया के माध्यम से गतिशील नामों के साथ तालिकाएँ बनाएँ