2009-11-17 6 views
10

Ich bin ein Neuling lernen Python/Django ...Django manage.py syncdb Kein Modul werfen namens MySQLdb

Bin mit dem folgenden Tutorial here entfernt.

Erstellt eine MySQL-Datenbank in MySQL 5 mit Snow Leopard.

die settings.py-Datei wie folgt aussehen Editiert:

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

Nun, wenn ich den folgenden Befehl:

python manage.py syncdb 

ich die folgende Fehlermeldung:

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 

Was mache ich möglicherweise falsch?

Glückliche Programmierung ...

Antwort

12

Das Problem ist, dass Sie den Python-Modul fehlen, die mit MySQL-Schnittstellen.

Siehe die Django-Dokumentation für get your database running, die weiter auf MySQL notes zeigt.

Wenn Sie jedoch nur das Tutorial durchgehen, ist es viel einfacher, SQLite Backend zu verwenden, das in Python integriert ist. Keine Treiber, Server usw. benötigt.

14
sudo easy_install mysql-python 

das MySQLdb Modul installieren, damit Sie mit MySQL von Python arbeiten, oder, wenn Sie mit virtualenv arbeiten wollen (die Sie sollten),

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 

Werden Sie in einem virtualenv setzen mit einer aktuellen Installation von django (Sie können angeben, welche Version, zB django == 1.1.1) und das installierte MySQLdb-Modul. Mit virtualenv können Sie separate Umgebungen für verschiedene Projekte haben, so dass Sie verschiedene Module installieren und sogar verschiedene Versionen dieser Module (oder Python) für verschiedene Projekte verwenden können. So verlassen Sie virtualenv geben Sie einfach den Befehl

deactivate 

oder an die Umgebung zu wechseln ‚foo‘ Typ

workon foo 

Sie sollten auch, wenn Sie vorhaben, werden mit diesen drei Linien virtualenv hinzufügen zu Ihrem ~/.bash_profile (auf O X, ~/.bashrc im allgemeinen unter Linux):

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

Es ist erwähnenswert, (auch zu diesem späten Zeitpunkt), dass die "ImproperlyConfigured" Fehler unter

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

kann ein roter Hering in den Fällen, in denen MySQL nicht läuft - ich war gerade dies selbst Fehler googeln, fragen, warum eine Fehlkonfiguration ‚plötzlich‘ erschienen war und während der Suche und Stoßen lief ich einige andere verwalten.py Befehl und bekam diese ähnlich, aber viel hilfreicher, Fehler:

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)")

Nach mysqld Überprüfung, findet es nicht läuft und startet es - mein Konfigurationsfehler wie durch ein Wunder wurde behoben!

1

die Sie interessieren, wenn Sie

Linux verwenden: - sudo apt-get install python-mysqldb

Fenster: - pip install python-mysqldb oder easy_install python-mysqldb

Hope this

0

Stellen Sie sicher funktionieren sollte Ihre Datenbank erstellen und mit Ihrem Der MySQL-Server versucht, eine Verbindung zur Datenbank herzustellen, um zu überprüfen, ob der Datenbankname, der Benutzername und das Passwort korrekt sind. laufen dann:

1) pip install mysqlclient

2) python manage.py migrate