2010-03-31 11 views

उत्तर

15

आप के बजाय SQLAlchemy का उपयोग नहीं करते MySQLdb-आप, oursql MySQLdb की तरह कुछ का उपयोग करने की SQLAlchemy का उपयोग करें (एक और MySQL के ड्राइवर है कि मैंने सुना है कि अच्छे और बेहतर प्रदर्शन है) sqlite3 मॉड्यूल, psycopg2, या कोई अन्य डेटाबेस ड्राइवर, आप उपयोग कर रहे हैं।

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

+0

स्क्लाक्लेमी का दावा है कि __ कोर_ और एक __ORM__ शामिल है। क्या मुझे Python और MySQL इंटरफ़ेस करने के लिए MySQLdb स्थापित करने की आवश्यकता है? मुझे कुछ भी पता नहीं है, लेकिन जिस तरह से मैं इसे समझता हूं, SQLAlchemy __Core__ MySQLdb को प्रतिस्थापित कर सकता है। क्या वह सही है? http://www.sqlalchemy.org/features.html – Kit

+1

@ किट, कोई SQLAlchemy कोर वास्तविक DBAPI2 डेटाबेस एडाप्टर को MySQLdb जैसे प्रतिस्थापित नहीं करता है। SQLAlchemy कोर वास्तव में आपके डेटाबेस के साथ संवाद नहीं करता है। MySQL के साथ संवाद करने के लिए आपको MySQLdb (या, अधिमानतः, oursql) स्थापित करने की आवश्यकता है। –

9

विभिन्न डीबी इंजनों के बीच आसान पोर्टेबिलिटी (कहें कि कल आप तय करते हैं कि आप स्क्लाइट, या पोस्टग्रेएसक्यूएल, या ...), और उच्च स्तर के अमूर्त (और इस प्रकार संभावित रूप से उच्च उत्पादकता) में जाना चाहते हैं।

वे अच्छे कारणों में से कुछ हैं। ओआरएम का उपयोग करने के कुछ बुरे कारण भी हैं, जैसे कि एसक्यूएल सीखना नहीं चाहते हैं, लेकिन मुझे संदेह है कि विशेष रूप से एसक्यूएलकेकी को वास्तव में लोगों द्वारा समर्थित नहीं किया गया है, जो कि एसक्यूएल एसक्यूएल की बजाय ओआरएम चाहते हैं .-)।

+0

सुंदर ज्यादा PHP में रूबी या सिद्धांत में सक्रिय रिकॉर्ड का उपयोग कर के लिए एक ही कारण (या किसी अन्य ORM वास्तव में ...) – SeanJA

+0

MySQLdb इस समय कोई यूनिकोड समर्थन हासिल है (यह कुछ यूनिकोड संबंधित कीड़े के बाद बंद कर दिया गया था खोजे गए)। SQLAlchemy उन एन्कोड/डीकोड कॉल को सार तत्वित करता है जो आपको इसका उपयोग किए बिना मैन्युअल रूप से निष्पादित करना चाहिए। – Yaroslav

+0

"या कोई अन्य ओआरएम वास्तव में ..." ठीक है, मेरे पास कोई सुराग ओआरएम मौजूद नहीं था या वे आज से पहले क्या थे। –

3

क्या एलेक्स ने कहा कि के अलावा ...

  1. शायद एक बुरी बात है, हालांकि, आप अधिक गैर तकनीकी के हिस्से के रूप शामिल लोगों प्राप्त करना चाहते हैं, तो "एसक्यूएल जानने के लिए इच्छुक नहीं" विकास प्रक्रिया, ओआरएम इस पर एक बहुत अच्छी नौकरी करते हैं क्योंकि यह इस स्तर की जटिलता को एक स्तर से नीचे धक्का देती है। Django सफल बनाने वाले तत्वों में से एक यह है कि सॉफ्टवेयर इंजीनियरों की बजाय "समाचार पत्र पत्रकार" वेबसाइट को बनाए रखने की क्षमता है।

  2. ओआरएम की सीमाओं में से एक यह है कि वे कच्चे एसक्यूएल का उपयोग करने के रूप में स्केलेबल नहीं हैं। पिछली नौकरी पर, हम बहुत सी मैनुअल एसक्यूएल पीढ़ी से छुटकारा पाने के लिए और आसानी से उपयोग (एसक्यूएलकेमी, एलिक्सीर इत्यादि) के लिए ओआरएम पर स्विच करना चाहते थे, लेकिन महीनों बाद, मैं फिर से कच्चे एसक्यूएल लिखना समाप्त कर दिया ओआरएम सिस्टम द्वारा उत्पन्न अक्षम या उच्च विलंबता प्रश्नों के आसपास पहुंचने के लिए।

+1

पुन: कारण 2, विशेष रूप से एसए को इतना अच्छा बनाता है, यह है कि कहीं भी कच्चे एसक्यूएल को चिपकाना मुश्किल है: engine.execute ("मेरा रॉ SQL STRING;") –