SQLAlchemy में के साथ एक ही मेज पर एकाधिक विदेशी चाबियाँ, Foo
को, Bar
कल्पना हम एक यौगिक प्राथमिक कुंजी के साथ एक मेज Foo
है, और जो इसे जोड़ने दो विदेशी कुंजी constrains है (प्रत्येक Bar
दो Foo
वस्तुएं हैं)।SQLAlchemy: यौगिक प्राथमिक कुंजी
मेरे समस्या relationship
समारोह है, जो मुझे जानकारी (primaryjoin
में) जो मैं पहले से ही ForeightKeyConstraint
(उल्लंघन करने सूखी) में दे दिया है दोहराने बनाता है के साथ है। क्या इसे संरचित करने का कोई और तरीका है ताकि मुझे जानकारी दोहराने की ज़रूरत न हो? प्रासंगिक ForeignKeyConstraint
से relationship
पास करने का कोई तरीका?
class Foo(Base):
__tablename__ = "Foo"
id_1 = Column(Integer, primary_key=True)
id_2 = Column(Integer, primary_key=True)
class Bar(Base):
__tablename__ = "Bar"
id = Column(Integer, primary_key=True)
foo_1_id_1 = Column(Integer)
foo_1_id_2 = Column(Integer)
foo_2_id_1 = Column(Integer)
foo_2_id_2 = Column(Integer)
__table_args__ = (
ForeignKeyConstraint(
[foo_1_id_1,foo_1_id_2],
[Foo.id_1,Foo.id_2]
),
ForeignKeyConstraint(
[foo_2_id_1,foo_2_id_2],
[Foo.id_1,Foo.id_2]
)
)
foo_1 = relationship(Foo,primaryjoin="(Bar.foo_1_id_1 == Foo.id_1) & (Bar.foo_1_id_2 == Foo.id_2)")
foo_2 = relationship(Foo,primaryjoin="(Bar.foo_2_id_1 == Foo.id_1) & (Bar.foo_2_id_2 == Foo.id_2)")
धन्यवाद।
धन्यवाद। लेकिन पुनरावृत्ति है। मुझे एहसास है कि यह नहीं जानता कि किस 'विदेशीके कॉन्स्ट्रेन' का उपयोग करना है। लेकिन अगर, उदाहरण के लिए, मैं किसी भी तरह से 'रिश्तेदार' के लिए प्रासंगिक 'विदेशीके कॉन्स्ट्रेन' का संदर्भ दे सकता हूं, और यह स्वयं के लिए अभिव्यक्ति अभिव्यक्ति को समझ सकता है (जैसे ऐसा होता है जब दिए गए तालिका में केवल एक 'विदेशीके कॉन्स्ट्रेन' होता है) तो वह शामिल होने के विवरण की पुनरावृत्ति को खत्म कर देगा। – DaedalusFall
सच है, और वास्तव में, जैसा कि बताया गया है, रिश्तों को 'विदेशी_की 'प्रदान करने की संभावना है, लेकिन वर्तमान में इसका उपयोग' प्राथमिकजॉइन 'स्थिति का अनुमान लगाने के लिए नहीं किया जाता है। आपका मामला अच्छा उदाहरण है जहां इसे इस तरह इस्तेमाल किया जा सकता है। लेकिन जैसा कि उत्तर में बताया गया है, * वर्तमान में * यह नहीं है। लेकिन आप http://www.sqlalchemy.org/trac/ – van
पर फीचर अनुरोध टिकट क्यों नहीं बनाते हैं, तो मैं यह सुनिश्चित करना चाहता था कि मुझे कुछ स्पष्ट याद नहीं आ रहा है, जो ज्यादातर अब तक मामला रहा है मेरी स्क्लेक्लेमी दुःख! – DaedalusFall