2011-08-28 12 views
31

मैंने अपने Django 1.3 ऐप में MySQLdb के बजाय PyMySQL का उपयोग करके कुछ समस्याएं हल की हैं। स्विच स्विच करने के तरीके पर मैंने इस ट्यूटोरियल का पालन किया: http://web-eng-help.blogspot.com/2010/09/install-mysql-5-for-python-26-and.htmlPyMySQL क्या है और यह MySQLdb से अलग कैसे है? क्या यह Django तैनाती को प्रभावित कर सकता है?

अब मैं जानना चाहता हूं कि वास्तव में PyMySQL क्या है और यह MySQLdb से अलग कैसे है।

मैं इसे स्थानीयहोस्ट पर उपयोग कर रहा हूं और फिर इसे कुछ होस्टिंग में अपलोड कर दूंगा।

क्या स्थानीयहोस्ट पर PyMySQL का उपयोग करना और जो भी वे प्रदान करते हैं उन्हें होस्ट करना ठीक है? चूंकि मैंने "mySQLdb" को base.py और introspection.py में "PyMySQL" में बदल दिया है, तो क्या मुझे इन फ़ाइलों को बदलने के बाद इसे सर्वर पर अपलोड करने की आवश्यकता होगी? या जैसा कि यह Django की फाइलें है, क्योंकि Django पहले से ही अपलोड हो जाएगा, इससे कोई फर्क नहीं पड़ता?

+1

'pymysql'' mysqldb' ('mysql-python') पैकेज का शुद्ध पायथन पोर्ट है। तो, सी संकलक की आवश्यकता के बिना किसी भी सिस्टम पर 'pymysql' स्थापित किया जा सकता है। 'Mysqldb' को संस्थापित करने के लिए एक कंपाइलर की आवश्यकता हो सकती है और विंडोज़ में त्रुटि उत्पन्न हो सकती है (' त्रुटि: vcvarsall.bat' खोजने में असमर्थ) यदि आपके पास कोई नहीं है। – skjoshi

+0

यह प्रश्न अधिक व्यापक होता अगर यह कम व्यापक होता।आप कई चीजें पूछ रहे हैं: दो पुस्तकालयों के बीच अंतर, किसी प्रकार के साझा होस्टिंग पर्यावरण (जिसे आपने हमें कुछ भी नहीं बताया है, और जिसे हम संभवतः आपकी सहायता नहीं कर सकते हैं) के लिए PyMySQL को कैसे तैनात करें, और , अधिक व्यापक रूप से, Django के साथ PyMySQL का उपयोग करते समय किसी को क्या अवगत होना चाहिए। वे तीन अलग-अलग प्रश्न हैं और इस तरह से बेहतर तरीके से पूछा जाएगा। –

+0

प्रश्न यह था कि मुझे PyMySQL का उपयोग करना चाहिए या नहीं और मुझे दो चिंताएं थीं कि आप कई प्रश्न पूछ रहे हैं। – Hafiz

उत्तर

12

PyMySQL और MySQLdb पाइथन, पुस्तकालयों के लिए दोनों डेटाबेस कनेक्टर हैं जो पाइथन प्रोग्राम को MySQL सर्वर से बात करने में सक्षम बनाता है।

ऐप को तैनात करते समय आप आमतौर पर कोर Django फ़ाइलों को अपलोड नहीं करेंगे। यदि Django आपके परिनियोजन सर्वर पर ठीक काम कर रहा है, तो आपको निश्चित रूप से वहां कुछ भी बदलने की आवश्यकता नहीं है। डीबी चालक ओआरएम के नीचे भी एक या दो कदम है, और निश्चित रूप से आपके द्वारा लिखे गए कोड में से कोई भी इस बात पर निर्भर करता है कि इनमें से कौन सा उपयोग में है।

9

आपका पहला बिंदु:

pymysql wiki पेज के अनुसार:

MySQLdb, is a C extension module that has a reputation of being difficult to compile, especially if you're on a Mac. Additionally, end-users need to wait for new binaries to be compiled for each new release of Python, and MySQLdb will never run on Jython, IronPython, or PyPy (without something like cpyext or IronClad). We also maintain 100% compatibility between Python 2 and Python 3, so all advancements made on the 2.x trunk will be immediately available on Python 3.

आपकी दूसरी बिंदु:

If django is working fine on your localhost, then it should be fine on your development.

+0

हाँ, लेकिन मेरा मुद्दा यह है कि जब मैंने ऊपर दी गई उन दो फाइलों में MySQLdb को pymysql में बदल दिया है, जो django के हैं, तो क्या इससे समस्या पैदा होगी? या django पहले से ही webhostings पर है? या pymysql वहाँ है? – Hafiz

47

PyMySQL और MySQLdb ही कार्यक्षमता प्रदान करते हैं - वे दोनों डेटाबेस कनेक्टर्स हैं। अंतर कार्यान्वयन में है जहां MySQLdb एक सी एक्सटेंशन है और PyMySQL शुद्ध पायथन है।

कुछ कारणों से कोशिश करने के लिए PyMySQL हैं:

  • यह कुछ सिस्टम पर चलाने के लिए आसान हो सकता है
  • यह PyPy के साथ काम करता
  • यह "greened" किया जा सकता है और gevent
  • साथ काम करता है

Django के साथ इसका उपयोग करने का उचित तरीका यह आयात करना है और इसे अपनी शीर्ष-स्तरीय फ़ाइल में MySQLdb का प्रतिरूपण करने के लिए कहें, आमतौर पर manage.py। अपने manage.py के शीर्ष पर निम्नलिखित कोड डालें (या जो भी फ़ाइल आप कॉल जब अपने सर्वर शुरू):

try: 
    import pymysql 
    pymysql.install_as_MySQLdb() 
except ImportError: 
    pass 
+1

मुझे यह जोड़ना चाहिए कि PyMySQL का आधिकारिक संस्करण उपरोक्त विधि का उपयोग कर Django 1.4 के साथ (वर्तमान में) संगत नहीं है। एक कांटा है जो https://github.com/CMGS/PyMySQL पर काम करता है यदि आप इसे आजमा देना चाहते हैं। –

+0

इसने मुझे बहुत समय बचाया - धन्यवाद! –

+5

मैं एक और कारण जोड़ूंगा: पायथन 3 – Alveoli

0

मेरे अनुभव मैं "MySQL-अजगर" को स्थापित करने के लिये कठिन था के अनुसार - (MySQLdb) । यह मुझे अधिक विकल्पों की खोज करता है इसलिए मुझे pymysql मिला, और यह आसानी से स्थापित हो गया और पहले एक आकर्षण की तरह काम किया। तो मैं केवल MySQLdb के बजाय pymysql का उपयोग करने का सुझाव दूंगा।

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