2012-09-10 10 views
10

आइए कहें कि मैंने अपनी कंपनी के विभिन्न विभागों के लिए एक उत्पाद डेटाबेस सिस्टम बनाया है। विभिन्न विभागों के लिए प्रत्येक विभाग का अपना पोस्टग्रेएसक्यूएल-डाटाबेस-उदाहरण होता है। डेटाबेस की स्कीमाटा एक जैसी है, हालांकि उनमें डेटा नहीं है। इन प्रणालियों में से प्रत्येक के लिए एक पायथन अनुप्रयोग मौजूद है जो कुछ व्यावसायिक तर्क (अप्रासंगिक) करता है। प्रत्येक पायथन ऐप SQLAlchemy के माध्यम से इसके और केवल अपने डेटाबेस तक पहुंचता है।एकाधिक डेटाबेस तक सहजता से पहुंचने के लिए SQLAlchemy का उपयोग कैसे करें?

मैं एक पर्यवेक्षक-प्रणाली बनाना चाहता हूं जो इन सभी डेटाबेस (रीडथ्रू कार्यक्षमता) में सभी डेटा तक पहुंच सकता है। enter image description here

मैं SQLAlchemy के साथ ऐसा कर सकते हैं:

यहाँ मैं क्या बारे में सोचने का एक उदाहरण है? यदि हां, तो उस तरह की समस्या के लिए सबसे अच्छा तरीका क्या है?

उत्तर

10

निश्चित रूप से आप इसे एसक्लाक्लेमी के साथ कर सकते हैं।

आपको बस इतना करना है कि अलग-अलग कनेक्शन इंजन बनाएं, प्रत्येक अपने स्वयं के सत्र निर्माता के साथ। SQLAlchemy में कुछ भी आपको एक समय में केवल एक डेटाबेस तक सीमित नहीं करता है।

engines = [] 
sessions = [] 
for dbconninfo in databases: 
    engine = create_engine(dbconninfo) 
    engines.append(engine) 
    sessions.append(sessionmaker(bind=engine)()) 

आप प्रश्नों को चलाने के लिए प्रत्येक सत्र के लिए उपयोग कर सकते, परिणाम वस्तुओं सत्र है, उन्हें उत्पादन इतना है कि परिवर्तन सही डेटाबेस को वापस प्रवाह से जुड़े होते हैं। session documentation का विस्तार से अध्ययन करें, यह देखने के लिए कि क्या होता है यदि आप किसी ऑब्जेक्ट को एक सत्र से दूसरे में मर्ज करना चाहते हैं, उदाहरण के लिए।

+0

और फिर मैं एक ही समय में सभी डीबीएस पूछ सकता हूं? – AME

+1

@AME: जब तक आप परिणाम अलग रखते हैं; एक सत्र से दूसरे सत्र में परिणाम जोड़ने की कोशिश न करें। –

संबंधित मुद्दे