2012-01-11 28 views
18

मैं डेटाबेस के लिए अपेक्षाकृत नया हूं, एसक्यूएल प्रश्नों का प्रदर्शन करता हूं, इस समय मैं अपने डीबी के लिए एमएस एसक्यूएल सर्वर का उपयोग कर रहा हूं (यही वह है जो हम अपने काम पर उपयोग करते हैं), लेकिन उम्मीद है कि मेरे प्रश्न के उत्तर सिर्फ उस विशेष डीबी के मुकाबले ज्यादा सामान्य हो सकते हैं।pymssql बनाम pyodbc बनाम adodbapi बनाम ...

मैं डीबी इंटरफ़ेस ऐप (इस मामले में, SQL सर्वर प्रबंधन स्टूडियो) का उपयोग करके अपने काम का एक अच्छा हिस्सा करता हूं, लेकिन मैं अजगर स्क्रिप्ट के माध्यम से कुछ काम भी करता हूं, जिनमें से कुछ क्रॉन नौकरियों के रूप में चलाते हैं, जिनमें से कुछ ऐसी वेबसाइटें हैं जो उपयोगकर्ता डीबी में प्रश्न सबमिट कर सकते हैं।

मैं & में पाइथन से डीबी में लिखने के लिए pymssql मॉड्यूल का उपयोग कर रहा हूं। लेकिन कुछ परेशान करने वाली समस्याएं हैं जिनमें मैं दौड़ रहा हूं। (ऐसा लगता है कि pymssql अस्थायी तालिकाओं का उपयोग नहीं कर सकता है, और मुझे "autocommit" के साथ परेशानी भी हुई है, लेकिन यह मेरी खुद की गलती है।)

इसलिए इनमें से अधिक से अनजान होने के कारण, मुझे बस इसका स्वाद पसंद आएगा दिशा मुझे जाना चाहिए। जहाँ तक मेरा बता सकते हैं, मैं कर सकता या तो:

  • उपयोग pymssql, जो एमएस एसक्यूएल सर्वर से सीधे बात करती है
  • उपयोग pyodbc है, जो स्थापित करने की आवश्यकता है FreeTDS & unixODBC पहले, और उन्हें स्थापित करने
  • उपयोग adodbapi मॉड्यूल, और मुझे यकीन नहीं है कि यहां कौन सी आवश्यकताओं की आवश्यकता है।
  • कोई अन्य विधि ??

बात है, मैं नहीं है पूरी तरह मिल क्या ODBC करता है। ऐसा लगता है कि कुछ प्रकार के "प्रमाणीकरण मध्यस्थ", एक मध्यम व्यक्ति की तरह यह सुनिश्चित करने के लिए कि वह उपयोगकर्ता है जो वह कहता है। और मुझे एडीओ की भी कम समझ है।

जबकि pymssql जाने का सबसे आसान तरीका लगता है, यह भी लगता है कि लोग कम से कम सोचते हैं, और अंत में इसे समाप्त कर दिया जाएगा। मैं बल्कि "सही" तरीका सीखूंगा क्योंकि मैं इस सामान से बहुत कुछ शुरू कर रहा हूं।

तो मैं एमएस एसक्यूएल सर्वर से बात करने के लिए पाइथन पाने और सामान्य रूप से डीबी से बात करने के सर्वोत्तम तरीके से कुछ जानकार विचारों की तलाश में हूं। मैं किसी के लिए सबसे अच्छा "सर्वोत्तम" परिभाषित करता हूं जो इसके साथ मामूली जटिल सामग्री करेगा। (जबकि मैं अभी शुरू कर रहा हूं, यह ऐसा कुछ है जिसे मुझे अंततः थोड़ा सा रैंप करना होगा।)

धन्यवाद! माइक

उत्तर

16

pyodbc (अनुशंसित)

मैं कुछ महीने पहले इस मॉड्यूल का उपयोग शुरू किया और अब तक कोई शिकायत नहीं है है। विकास समुदाय pymssql से अधिक सक्रिय लगता है। मेरे पास अभी तक कोई इंस्टॉलेशन समस्या नहीं थी (32 बिट विन XP और 64 बिट सर्वर 2008 आर 2)। आपके पास अतिरिक्त लाभ होगा कि आप एमएस एसक्यूएल सर्वर तक ही सीमित नहीं हैं।

आप पा सकते हैं: http://www.lfd.uci.edu/~gohlke/pythonlibs/ सहायक यदि आप विंडोज़ पर स्थापित कर रहे हैं।

pymssql

मैं लगभग 2.5 साल के लिए 1.x संस्करण के साथ काम किया है। बड़ी वस्तुओं के लिए आकार सीमाओं के साथ मुझे कुछ मामूली समस्याएं थीं। बहु-थ्रेडिंग (जिस बिंदु पर मुझे बंद करना पड़ा था) में भी बड़ी समस्याएं आईं। 1.x बहिष्कृत एमएस पुस्तकालयों पर आधारित था।हालांकि, हालिया संस्करण 2.x है और अब इन बहिष्कृत पुस्तकालयों का उपयोग नहीं करता है। इसके बजाय यह फ्रीटीडीएस (जैसे pyodbc) का उपयोग करता है। यह अच्छा लगता है, लेकिन मैंने अभी तक कोशिश नहीं की है।

adodbapi

मैं कोशिश की pymssql से स्विच और एक साल पहले के बारे में adodbapi इसकी जगह और प्रश्नों जो pymssql के साथ ठीक काम किया के कुछ कोई स्पष्ट कारण के लिए असफल गए हैं। मैंने तुरंत एडोडबैपी को फिर से छोड़ दिया।

+3

जैसा कि दिसंबर 2016 में घोषित किया गया था, pyodbc अब [आधिकारिक तौर पर माइक्रोसॉफ्ट द्वारा समर्थित है] (https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/09/sql-server -python-क्या नए /)। –

9

मेरे अनुभव से, पीवायओडीबीसी इन दिनों थोड़ा सा समस्याग्रस्त है। सबसे पहले, यह यूनिकोड तारों को ठीक से या विश्वसनीय रूप से प्रबंधित नहीं करता है। दूसरा, एपीआई थोड़ा पुराना है और विशिष्ट और कम पायथन डीबी-एपीआई (PEP-249) अनुपालन करता है।

मैं पीवाईएमएसएसक्यूएल में प्रोजेक्ट कोड माइग्रेट करने के बीच में हूं, जो अब तक मेरे परीक्षण के दौरान, ऊपर दिए गए दोनों मुद्दों पर आधार शामिल करता है। मुझे इस एपीआई के साथ किसी भी बहिष्कार के बारे में पता नहीं है क्योंकि ऐसा कुछ हद तक अपडेट किया जाता है (अक्टूबर 2013 में प्रमुख संस्करण), दस्तावेज़ अधिक से कम अद्यतित हैं और सक्रिय हैं।

ये सिर्फ मेरे वर्तमान निष्कर्ष और पीओओडीबीसी और पीवाईएमएसएसक्यूएल के साथ प्रगति हैं। पाठ्यक्रम के परिवर्तन के लिए सभी विषय :)

+2

हां, पायडबैक एक मोटे पैच के माध्यम से चला गया, लेकिन इसे हाल ही में कुछ टीएलसी प्राप्त हुआ है और अब [आधिकारिक तौर पर माइक्रोसॉफ्ट द्वारा समर्थित है] (https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/09/ एसक्यूएल सर्वर-अजगर-क्या नए /)। –

+1

इस साल की शुरुआत में (2017) pymssql को बंद करने का प्रस्ताव था, [pyodbc के पक्ष में pymssql को बंद करने का प्रस्ताव] (https://github.com/pymssql/pymssql/issues/477) और [pymssql बनाम pyodbc] (https://groups.google.com/forum/#!topic/pymssql/CLXHtLKBWig)। उन्होंने जारी रखने का फैसला किया, लेकिन अंतिम लिंक से पता चलता है कि pymssql के पीछे समुदाय रखरखाव खोजने के लिए संघर्ष कर रहा है। मुझे लगता है कि अभी सामान्य रूप से pyodbc एक बेहतर विकल्प की तरह लगता है (शायद pymssql आपकी आवश्यकताओं के आधार पर अभी भी बेहतर है)। –

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