मैं स्क्लेल्चेमी के तहत विरासत के बारे में थोड़ा उलझन में हूं, इस बिंदु पर जहां मुझे यह भी सुनिश्चित नहीं है कि किस तरह की विरासत (एकल तालिका, तालिका में शामिल, ठोस) मुझे यहां उपयोग करना चाहिए। मुझे कुछ जानकारी के साथ बेस क्लास मिला है जो सबक्लास के बीच साझा किया गया है, और कुछ डेटा जो पूरी तरह से अलग हैं। कभी-कभी, मैं सभी वर्गों से डेटा और कभी-कभी केवल उप-वर्गों से डेटा चाहता हूं। यहां एक उदाहरण दिया गया है:SQLAlchemy विरासत
class Building:
def __init__(self, x, y):
self.x = x
self.y = y
class Commercial(Building):
def __init__(self, x, y, business):
Building.__init__(self, x, y)
self.business = business
class Residential(Building):
def __init__(self, x, y, numResidents):
Building.__init__(self, x, y, layer)
self.numResidents = numResidents
मैं इसे घोषणात्मक का उपयोग करके एसक्यूएलकेमी में कैसे परिवर्तित करूं? तो, मैं पूछूंगा कि कौन सी इमारतें x>5
और y>3
के भीतर हैं? या कौन सी आवासीय इमारतों में केवल 1 निवासी है?
वाह, यह एक अच्छा जवाब है। धन्यवाद! तो मैंने एकल और जुड़ने वाले टेबल विकल्पों के बीच प्रदर्शन की तुलना की है, और दूसरी क्वेरी [फ़िल्टर (Residential.num_residents == n) .count()] एकल तालिका परिदृश्य (अपेक्षित के रूप में) में ~ 2x तेज चलाता है। हालांकि, किसी कारण से बिल्डिंग [फ़िल्टर ((बिल्डिंग.एक्स> एक्स) और (बिल्डिंग.ए> वाई)) के खिलाफ पहली क्वेरी। गिनती()] एकल तालिका के साथ लगभग 10% धीमी है, हालांकि वास्तव में सभी तत्वों को लोड करना बहुत तुलनीय है (.all())। – Noah
शामिल तालिका विरासत के संबंध में एक और विशिष्ट समस्या के लिए http: // stackoverflow देखें।कॉम/प्रश्न/838 9 606/कैसे-कर-ए-एसक्लाल्चेमी-क्लास-वारिस-ठीक-बावजूद-एक-मुश्किल-विदेशी-आर –
एकमात्र चीज गायब है कंक्रीट टेबल विरासत का उपयोग करके एक उदाहरण है - जिसे मैं चाहता हूं स्वाभाविक रूप से मदद करें :-) चूंकि यह एक पुराना सवाल है, इसलिए इस प्रश्न का उत्तर देने के बाद ठोस तालिका विरासत जोड़ा गया था। – ThatAintWorking