Django manage.py syncdb throwing Нет модуля с именем MySQLdb

Я новичок, изучающий Python/Django...

Используйте следующий учебник, расположенный здесь.

Создана база данных mysite в MySQL 5, запущенная на Snow Leopard.

Отредактировал файл 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

Чем я могу ошибаться?

Счастливое программирование...

Ответ 1

sudo easy_install mysql-python

установит модуль MySQLdb, чтобы вы могли работать с MySQL с Python или, если вы хотите работать с 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. Использование virtualenv позволит вам иметь отдельные среды для разных проектов, чтобы вы могли устанавливать разные модули и даже использовать разные версии этих модулей (или Python) для разных проектов. Чтобы оставить вас virtualenv просто введите команду

deactivate

или, чтобы переключиться на тип среды "foo" среды

workon foo

Вы также должны, если вы собираетесь использовать virtualenv, добавьте эти три строки в ваш ~/.bash_profile (в OS X, ~/.bashrc вообще на 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

Проблема в том, что вам не хватает модуля Python, который взаимодействует с MySQL.

Смотрите документы Django для получите вашу базу данных, которая далее указывает на MySQL отмечает.

Однако, если вы просто просматриваете учебник, гораздо проще использовать бэкэнд SQLite, встроенный в Python. Никаких драйверов, серверов и т.д. Не требуется.

Ответ 3

Стоит отметить (даже в этот поздний срок), что ошибка "Неправильноконфигурированная" ниже

Файл "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/backends/mysql/base.py", строка 13, на
raise Неправильноконфигурированный ( "Ошибка при загрузке модуля MySQLdb:% s" % e) django.core.exceptions.ImproperlyConfigured: Ошибка при загрузке модуля MySQLdb: Нет модуля с именем MySQLdb

может быть красной селедкой в ​​тех случаях, когда mysql не работает - я сам искал эту ошибку, задаваясь вопросом, почему "неожиданно" возникла некорректная конфигурация, и при поиске и подталкивании я запустил еще одну команду manage.py и получил это похоже, но гораздо более полезно, ошибка:

Файл "~/.virtualenvs/mdid3/lib/python2.7/site-packages/MySQLdb/connections.py", строка 187, в init

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

_mysql_exceptions.OperationalError: (2003, "Не удается подключиться к серверу MySQL на" 127.0.0.1 "(61)" )

После проверки mysqld, если он не работает и не запускается, моя ошибка конфигурации была чудом исправлена!

Ответ 4

Попробуйте, если вы используете

linux: - sudo apt-get install python-mysqldb

окна: - pip install python-mysqldb или         easy_install python-mysqldb

Надеюсь, что это сработает

Ответ 5

Обязательно создайте свою базу данных и на своем сервере MySQL попробуйте подключиться к базе данных, чтобы проверить правильность имени базы данных, имени пользователя и пароля. затем выполните:

1) pip install mysqlclient

2) python manage.py migrate