मान लीजिए मैं निम्नलिखित SQLAlchemy वर्गों को परिभाषित किया है:मैं एक गतिशील SQLAlchemy रिश्ते के प्रकार (उदाहरण के लिए कई से एक) कैसे निर्धारित कर सकता हूं?
Base = declarative_base()
class Person(Base):
__tablename__ = 'person'
id = Column(Integer, primary_key=True)
computers = relationship('Computer', backref=backref('owner', lazy='dynamic'))
class Computer(Base):
__tablename__ = 'computer'
id = Column(Integer, primary_key=True)
ownerid = Column(Integer, ForeignKey('person.id'))
आगे मान लीजिए कि मैं आलसी क्वेरी वस्तु इस तरह से एक्सेस किया है:
relation = getattr(Computer, 'owner')
मैं कैसे निर्धारित कर सकते हैं relation
का एक उदाहरण के लिए संदर्भित करता Person
(यानी, इस उदाहरण में, कई से एक रिश्ते में), या relation
उदाहरणों के संग्रह को संदर्भित करता है (जैसे एक से कई रिश्तों में)? दूसरे शब्दों में, मैं गतिशील SQLAlchemy रिलेशनशिप ऑब्जेक्ट के रिलेशनशिप प्रकार को कैसे निर्धारित कर सकता हूं?
model._sa_class_manager[relation].property.uselist
फिर आप उपयोग कर सकते हैं:
मुझे यकीन नहीं है कि मैं सही सवाल समझता हूं, लेकिन आपके उदाहरण में, आप यह क्यों नहीं देखते कि यह संग्रह है (उदा। एक सूची) या एक आइटम? यह स्क्लेक्लेमी से पूरी तरह से स्वतंत्र है और डेटाबेस से पूरी तरह से एसक्यूएलकेमी की ओआरएम सुविधा और सार का उपयोग करेगा। – javex
आप अधिकतर सही हैं: मुझे लगता है कि सही समाधान यह जांचना है कि 'इंस्टेंसेंस (रिलेशनशिप, लिस्ट)' --- यदि सही है तो हम इसे सिर्फ एक सूची की तरह इस्तेमाल कर सकते हैं, लेकिन यदि झूठी है तो आपको 'relation.one') 'एक ठोस उदाहरण के संबंध में मैप करने के लिए। यदि आप नीचे एक उत्तर जोड़ते हैं, तो मैं आपको इनाम दे सकता हूं (अगर आप यहां बताए गए चेतावनी को शामिल कर सकते हैं, तो आप कर सकते हैं)। – argentpepper