2009-10-19 19 views
5

क्या दो SQLAlchemy मॉडल के लिए declarative_base() के समान उदाहरण से प्राप्त होना आवश्यक है यदि उन्हें उसी सत्र में भाग लेना चाहिए? एसक्यूएलकेमी मॉडल को परिभाषित करने वाले दो या दो से अधिक मॉड्यूल आयात करते समय यह मामला होने की संभावना है।दो SQLAlchemy घोषणात्मक मॉडल एक ही declarative_base() साझा करना चाहिए?

from sqlalchemy.ext.declarative import declarative_base 

Base = declarative_base() 

class SomeClass(Base): 
    __tablename__ = 'some_table' 
    id = Column(Integer, primary_key=True) 
    name = Column(String(50)) 

Base2 = declarative_base() 

class AnotherClass(Base2): 
    __tablename__ = 'another_table' 
    id = Column(Integer, primary_key=True) 
    name = Column(String(50)) 

उत्तर

4

मैं सफलतापूर्वक ही सत्र में विभिन्न कथात्मक अड्डों का उपयोग करें। यह कई डेटाबेस का उपयोग करते समय उपयोगी हो सकता है: प्रत्येक आधार अपने मेटाडेटा के साथ बनाया गया है और प्रत्येक मेटाडेटा डेटाबेस को अलग करने के लिए बाध्य है। आपके कुछ घोषणात्मक आधार अतिरिक्त विधियों को परिभाषित कर सकते हैं या वे एक्सटेंशन इंस्टॉल करने के लिए एक और मेटाक्लास का उपयोग कर सकते हैं। तर्क:

+0

तुम भी बांध = {डेटाबेस, ... कक्षा} के साथ एक एकल सत्र का उपयोग कर सकते हैं। – joeforker

+0

निश्चित रूप से। लेकिन जब यह बड़ा हो जाता है तो इस तरह के बाइंड्स को बनाए रखना मुश्किल होता है। जबकि मैं इसे कई मेटाडेटा ऑब्जेक्ट्स से स्वचालित रूप से बनाने के बारे में कहता हूं। –

2

पृथक बेस कक्षाएं ठीक काम करेगी। प्रत्येक जिज्ञासा एक डेटाबेस के लिए जाने की जरूरत है -

आप जब वे विभिन्न डेटाबेस कनेक्शन का उपयोग कर रहे हैं, उस मामले आप उपयोग नहीं कर सकते दो डेटाबेस भर में मिलती है में सावधान रहना होगा।

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