मुख्य अंतर यह है कि जबकि 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'))