2009-11-17 18 views
10

मैं एक नौसिखिया पायथन/Django सीखने हूँ नामित syncdb ...Django manage.py फेंक नहीं मॉड्यूल MySQLdb

निम्नलिखित here स्थित ट्यूटोरियल का उपयोग कर रहा हूँ।

हिम तेंदुए पर चल रहे MySQL 5 में एक MySite डेटाबेस बनाया गया।

settings.py फ़ाइल इस तरह देखने के लिए संपादित:

DATABASE_ENGINE = 'mysql'   
DATABASE_NAME = 'mysite'    
DATABASE_USER = 'root'    
DATABASE_PASSWORD = ''  
DATABASE_HOST = ''    
DATABASE_PORT = ''    

अब जब मैं निम्नलिखित कमांड चलाएँ:

python manage.py syncdb 

मैं निम्न त्रुटि प्राप्त:

Traceback (most recent call last): 
File "manage.py", line 11, in <module> 
    execute_manager(settings) 
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
    python2.6/site-packages/django/core/management/__init__.py", line 362, 
    in execute_manager 
    utility.execute() 
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
    python2.6/site-packages/django/core/management/__init__.py", line 303, 
    in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
    python2.6/site-packages/django/core/management/base.py", line 195, in 
    run_from_argv 
    self.execute(*args, **options.__dict__) 
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
    python2.6/site-packages/django/core/management/base.py", line 221, in 
    execute 
    self.validate() 
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
    python2.6/site-packages/django/core/management/base.py", line 249, in 
    validate 
    num_errors = get_validation_errors(s, app) 
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
    python2.6/site-packages/django/core/management/validation.py", line 
    22, in get_validation_errors 
    from django.db import models, connection 
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
    python2.6/site-packages/django/db/__init__.py", line 41, in <module> 
    backend = load_backend(settings.DATABASE_ENGINE) 
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages 
    /django/db/__init__.py", line 17, in load_backend 
    return import_module('.base', 'django.db.backends.%s' %backend_name) 
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
    python2.6/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages  /django/db/backends/mysql/base.py", line 13, in <module> 
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) 
    django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb 
    module: No module named MySQLdb 

मैं संभवतः गलत क्या कर रहा हूं?

मुबारक प्रोग्रामिंग ...

उत्तर

12

समस्या यह है कि आप पायथन मॉड्यूल है कि MySQL के साथ इंटरफेस याद कर रहे हैं है।

get your database running के लिए Django दस्तावेज़ देखें जो आगे MySQL notes पर इंगित करता है।

हालांकि, अगर आप ट्यूटोरियल के माध्यम से जा रहे हैं तो पाइथन में अंतर्निहित SQLite बैकएंड का उपयोग करना बहुत आसान है। कोई ड्राइवर, सर्वर, आदि की आवश्यकता नहीं है।

14
sudo easy_install mysql-python 

आप अजगर से MySQL के साथ काम करने की अनुमति के लिए MySQLdb मॉड्यूल स्थापित हो जाएगा, या, यदि आप virtualenv के साथ काम करने (जो आपको चाहिए) चाहते हैं,

sudo easy_install virtualenv virtualenvwrapper 
export WORKON_HOME=$HOME/.virtualenvs 
export PIP_VIRTUALENV_BASE=$WORKON_HOME 
source /usr/local/bin/virtualenvwrapper_bashrc 
mkvirtualenv mysite 
pip install mysql-python django 

आप एक virtualenv के अंदर डाल दिया जाएगा django के वर्तमान संस्थापन के साथ (आप निर्दिष्ट कर सकते हैं कि कौन सा संस्करण, उदाहरण के लिए django == 1.1.1) और MySQLdb मॉड्यूल स्थापित है। वर्चुअलएन्व का उपयोग करने से आप विभिन्न परियोजनाओं के लिए अलग-अलग वातावरण प्राप्त कर सकते हैं ताकि आप विभिन्न मॉड्यूल स्थापित कर सकें और विभिन्न मॉडलों के लिए उन मॉड्यूल (या पायथन) के विभिन्न संस्करणों का भी उपयोग कर सकें। तुम सिर्फ आदेश

deactivate 

टाइप virtualenv या, पर्यावरण के लिए स्विच करने के लिए छोड़ने के लिए 'foo' प्रकार

workon foo 

आप चाहिए भी, आप virtualenv इन तीन लाइनों को जोड़ने का उपयोग किया जा रहे हैं तो अपने ~/.bash_profile को (OS X पर, ~/.bashrc आम तौर पर लिनक्स पर):

export WORKON_HOME=$HOME/.virtualenvs # where virtualenvs should be created 
export PIP_VIRTUALENV_BASE=$WORKON_HOME # tells pip where to look for virtualenvs 
source /usr/local/bin/virtualenvwrapper_bashrC# bash completion and wrapper functions for virtualenv 
2

ऐसा नहीं है कि

के नीचे "ImproperlyConfigured" त्रुटि उनका कहना है (यहां तक ​​कि इस देर की तारीख में) के लायक है

File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages /django/db/backends/mysql/base.py", line 13, in
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

मामलों में जहां mysql नहीं चल रहा है में एक रेड हेरिंग हो सकता है - मैं सिर्फ यह अपने आप त्रुटि googling किया गया था, सोच क्यों किसी संरूपण था 'अचानक' प्रकट हुए और खोज करते समय और उकसाने मैं कुछ अन्य का प्रबंधन भाग गया।py आदेश और इस समान है, लेकिन और अधिक उपयोगी, त्रुटि मिली:

File "~/.virtualenvs/mdid3/lib/python2.7/site-packages/MySQLdb/connections.py", line 187, in init

super(Connection, self).init(*args, **kwargs2)

_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (61)")

mysqld जाँच, यह नहीं चल पाने के लिए और इसे शुरू करने के बाद - मेरी कॉन्फ़िगरेशन त्रुटि चमत्कारिक ढंग से तय किया गया था! sudo apt-get install python-mysqldb

खिड़कियां: - -: यदि आप

linux उपयोग कर रहे हैं

1

इस प्रयास करें pip install python-mysqldb या easy_install python-mysqldb

आशा है कि यह काम करना चाहिए

0

अपने डेटाबेस बनाने के लिए सुनिश्चित करें और के साथ अपने MySQL सर्वर चल रहा है यह जांचने के लिए डेटाबेस से कनेक्ट करने का प्रयास करें कि डेटाबेस नाम, उपयोगकर्ता नाम और पासवर्ड सही हैं। तब चलाएँ:

1) pip install mysqlclient

2) python manage.py migrate

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