मैं एमएस एसक्यूएल सर्वर चला रहा हूं और विभिन्न डेटाबेस (उसी सर्वर पर) में स्थित दो तालिकाओं के बीच JOIN
निष्पादित करने का प्रयास कर रहा हूं। यदि मैं pyodbc (डेटाबेस निर्दिष्ट किए बिना) का उपयोग कर सर्वर से कनेक्ट करता हूं, तो निम्न कच्चे SQL ठीक काम करता है।SQLAlchemy: एक ही सत्र में एकाधिक डेटाबेस (उसी सर्वर पर)?
SELECT * FROM DatabaseA.dbo.tableA tblA
INNER JOIN DatabaseB.dbo.tableB tblB
ON tblA.id = tblB.id
दुर्भाग्य से, मैं सिर्फ SQLAlchemy का उपयोग कर काम करने के लिए अनुरूप प्राप्त नहीं कर पा रहे। मैं इस विषय में कुछ स्थानों में पर छुआ देखा है:
- Is there a way to perform a join across multiple sessions in sqlalchemy?
- Cross database join in sqlalchemy
- How do I connect to multiple databases on the same SQL Server with sqlalchemy?
- How can I use multiple databases in the same request in Cherrypy and SQLAlchemy?
सबसे अलग इंजन/सत्र का उपयोग करने की सलाह देते हैं, लेकिन मैं महत्वपूर्ण डेटाबेस के बीच जुड़ने की आवश्यकता है, इसलिए मुझे नहीं लगता कि यह दृष्टिकोण सहायक होगा। एक अन्य सामान्य सुझाव schema
पैरामीटर का उपयोग करना है, लेकिन यह मेरे लिए काम नहीं कर रहा है। उदाहरण के लिए निम्नलिखित काम नहीं करता है।
engine = create_engine('mssql+pyodbc://...') #Does not specify database
metadataA = MetaData(bind=engine, schema='DatabaseA.dbo', reflect=True)
tableA = Table('tableA', metadataA, autoload=True)
metadataB = MetaData(bind=engine, schema='DatabaseB.dbo', reflect=True)
tableB = Table('tableB', metadataB, autoload=True)
मैं भी varients जहां schema='DatabaseA'
और schema='dbo'
कोशिश की है। सभी मामलों में SQLAlchemy दोनों तालिका ए और बी के लिए NoSuchTableError
फेंकता है कोई विचार?