2009-11-17 17 views
10

soy un novato aprender Python/Django ...Django manage.py syncdb lanzando Sin módulo denominado MySQLdb

estoy usando el siguiente tutorial se encuentra here.

Creó una base de datos mysite en MySQL 5 ejecutándose en Snow Leopard.

de editar el fichero settings.py a tener este aspecto:

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

Ahora cuando ejecute el siguiente comando:

python manage.py syncdb 

recibo el siguiente error:

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 

¿Qué estoy haciendo mal?

programación feliz ...

Respuesta

12

El problema es que se echa en falta el módulo de Python que interactúa con MySQL.

Consulte los documentos de Django para get your database running que apuntan a MySQL notes.

Sin embargo, si solo está siguiendo el tutorial, es mucho más fácil usar el back-end SQLite que está incorporado en Python. No se necesitan controladores, servidor, etc.

14
sudo easy_install mysql-python 

instalará el módulo MySQLdb para que pueda trabajar con MySQL desde Python, o, si se quiere trabajar con virtualenv (que debería),

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 

va a poner dentro de un virtualenv con una instalación actual de django (puede especificar qué versión, por ejemplo, django == 1.1.1) y el módulo MySQLdb instalado. Usar virtualenv le permitirá tener entornos separados para diferentes proyectos para que pueda instalar diferentes módulos e incluso utilizar diferentes versiones de esos módulos (o Python) para diferentes proyectos. Para dejar que virtualenv sólo tiene que teclear el comando

deactivate 

o, para cambiar al entorno de tipo 'foo'

workon foo 

Usted también debería, si se va a utilizar virtualenv añadir estas tres líneas a su ~/.bash_profile (en OS X, ~/.bashrc general en 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

vale la pena señalar (aunque a estas alturas) que el error "ImproperlyConfigured" a continuación

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

puede ser una cortina de humo en caso de que MySQL no se está ejecutando - Estaba buscando en Google este error mismo, preguntándose por qué había una mala configuración 'de repente' aparecido y mientras que la búsqueda y pinchar me encontré algún otro manejar.py comando y consiguió esto similar, pero mucho más útil, error:

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

Después de comprobar mysqld, la búsqueda no de funcionamiento y arranque - mi error de configuración se fijó milagrosamente!

1

Prueba este si está utilizando

Linux: - sudo apt-get install python-mysqldb

ventanas: - pip install python-mysqldb o easy_install python-mysqldb

Hope esto debería funcionar

0

Asegúrese de crear su base de datos y con su El servidor MySQL que se ejecuta intenta conectarse a la base de datos para verificar que el nombre de la base de datos, el nombre de usuario y la contraseña sean correctos. a continuación, ejecute:

1) pip install mysqlclient

2) python manage.py migrate

Cuestiones relacionadas