2008-12-12 9 views
6

युक्त फ़ोल्डरों को व्यवस्थित करने का सबसे अच्छा तरीका मैं काम पर स्क्लेक्लेमी का उपयोग करता हूं और यह वास्तव में काम ठीक करता है। अब मैं सर्वोत्तम प्रथाओं के बारे में सोच रहा हूं। अबएसक्यूएलकेमी मॉडल

my_model 
     |__ __init__.py 
     |__ _config.py <<<<< contains LOGIN, HOST, and a MetaData instance 
     |__ table1.py <<<<< contains the class, the model and the mapper for table1 
     |__ table2.py <<<<< contains the class, the model and the mapper for table2 
     [...] 

, मैं वास्तव में अगर यह यह करने के लिए सबसे अच्छा तरीका है पता नहीं है:

अभी के लिए, मैं एक मॉड्यूल सभी SQLA सामान पकड़े पैदा करते हैं। मैं कक्षाओं को एक अच्छी ग्रैन्युलरिटी के साथ लोड करना चाहता हूं और डीबी आदि के साथ केवल एक कनेक्शन बनाना सुनिश्चित करना चाहता हूं।

यहां, सभी वर्ग अलग हो गए हैं, लेकिन सभी आयात _config हैं और मैं सोच रहा हूं कि यह एक अच्छी बात है ।

और भी, मैं मॉडल कक्षाओं के उप-वर्ग बनाने में सक्षम होना चाहता हूं जिन्हें हर बार मैपर के साथ गड़बड़ किए बिना स्वतंत्र रूप से संग्रहीत किया जा सकता है। मैं उसे कैसे कर सकता हूँ ?

अभी के लिए मैंने उन्हें एक ही फाइल में रखा है और मुझे एक और मैपर बनाना है, लेकिन पहले मैपर को अभी भी हर बार बुलाया जाता है। वही होगा अगर मुझे मूल वर्ग आयात करना पड़ेगा क्योंकि मैपर आयात पर ट्रिगर होता है। यदि मैं डेटा तक पहुंचने के लिए कक्षा का उपयोग नहीं करता, तो क्या यह हर बार इसे मैप करने के लिए अति ताप नहीं है?

मैं भी एलिक्सीर का उपयोग करने से बचना चाहता हूं, कृपया।

उत्तर

3

व्यक्तिगत रूप से मैं मॉडल कक्षाओं से डेटाबेस/ओआरएम तर्क को रखना पसंद करता हूं। यह उन्हें परीक्षण करना आसान बनाता है। मेरे पास आमतौर पर types.py जैसा कुछ है जो मेरे आवेदन में उपयोग किए जाने वाले प्रकारों को परिभाषित करता है, लेकिन डेटाबेस से स्वतंत्र है।

तो आम तौर पर वहाँ एक db.py या कुछ इसी तरह जो Session वर्ग और वे जो प्रदर्शन को छोड़कर सभी मानचित्रकारों आदि अन्य मॉड्यूल के

कोई नहीं सहित डेटाबेस, स्थापित करने के लिए आवश्यक कोड के बाकी है डेटाबेस संचालन को db मॉड्यूल आयात करने की आवश्यकता है और डेटाबेस का अस्तित्व अधिकांश अनुप्रयोग वर्गों से पूरी तरह से छिपा हुआ है।

जहाँ तक मुझे पता है, आप आसानी से मैपर बदलने के बिना सबक्लास बना सकते हैं। SQLAlchemy के पास यह जानने का कोई तरीका नहीं होगा कि जब आप कोई क्वेरी करते हैं तो डेटाबेस से कौन सा सबक्लास पुनर्प्राप्त करना होता है और जब भी आप डेटा संग्रहित करते हैं तो आपको सबक्लास को इंगित करने में सक्षम होना चाहिए।

मैंने वास्तव में सभी 0 मैपर्स को मुख्य db मॉड्यूल से कॉल करने से उत्पन्न होने वाली कोई समस्या नहीं देखी है, इसलिए मुझे नहीं लगता कि उन्हें प्रारंभ करना वास्तव में एक चिंता है जब तक कि आप वास्तव में इसे बाधा के रूप में नहीं पहचानते। मेरे अनुभव में, अन्य प्रसंस्करण मामूली मैपर ओवरहेड की तुलना में एक बहुत बड़ा कारक है।

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