2014-10-25 4 views
13

Я новичок в Python и пытаюсь настроить проект Django для работы с MySql. Я прочитал документацию, а также некоторые другие сообщения StackOverflow по этой теме, но я до сих пор не могу заставить ее работать.Python3 + MySql: Ошибка при загрузке модуля MySQLdb: нет модуля с именем 'MySQLdb'

Когда я пытаюсь запустить мигрировать в Django, я получаю следующее сообщение об ошибке:

Error loading MySQLdb module: No module named 'MySQLdb' 

Я установил рекомендуемые MySql Python Connector (2.0.1) выбор Ubuntu (так как я на Mint Linux). Он устанавливается правильно. Я все еще получаю ошибку. Мне не нужно добавлять эту библиотеку в проект или что-то еще, не так ли? Похоже, что python должен просто знать об этом и успешно работать. Что я могу сделать? Благодарю.

EDIT: Я забыл упомянуть: я запускаю Python 3.4 - многие типичные решения все еще используют 2.7, поэтому они не работают, и все решения с 3.0 я пробовал без успеха.

+0

Мне посчастливилось использовать: https://github.com/nakagami/django-cymysql/ Но я бы предпочел использовать «официальный» разъем. Или я думаю об этом неправильно? – skaz

+0

Здесь есть много подобных вопросов «python3 mysql» http://stackoverflow.com/search?q=python3+mysql Я рекомендую вам попробовать https://github.com/davispuh/MySQL-for-Python-3 – madzohan

+0

Возможный дубликат [Могу ли я использовать MySQL на Django (dev 1.6.x) с Python3.x?] (Http://stackoverflow.com/questions/13320343/can-i-use-mysql-on-djangodev-1- 6-x-with-python3-x) – madzohan

ответ

7

Мне нужно будет увидеть вашу конфигурацию DATABASES в settings.py, но похоже, что она пытается загрузить MySQLDB вместо установленного вами Mysql Python Connector. В БАЗ должно выглядеть примерно так:

DATABASES = { 
    'default': { 
     'NAME': 'mydatabase', 
     'ENGINE': 'mysql.connector.django', 
     'USER': 'myuser', 
     'PASSWORD': 'secretpassword', 
     'OPTIONS': { 
      'autocommit': True, 
     }, 
    } 
} 

Примечание ДВИГАТЕЛЬ часть ... что говорит Django использовать разъем MySQL вместо MySQLDb ...

Дополнительная информация доступна здесь: http://bunwich.blogspot.com/2014/02/finally-mysql-connector-that-works-with.html http://dev.mysql.com/doc/connector-python/en/connector-python-django-backend.html

и если вы ждете, чтобы использовать Юг:

www.pythonanywhere.com/wiki/UsingMySQL

Возможно, вы захотите отметить, что соединитель Oracle - это GPL, и с этим кодом могут возникнуть проблемы с лицензией. Смотрите здесь:

groups.google.com/forum/#!topic/django-developers/8r_RVmUe5ys

1.7 документация Django рекомендует использовать драйвер mysqlclient ...

docs.djangoproject.com/ ан/1.7/реф/базы данных/ --see секции по API драйверов Mysql DB

pypi.python.org/pypi/mysqlclient для этого клиента ...

-Скотт

+9

django.core.exceptions.ImproperlyConfigured: 'mysql.connector.django' не является доступным бэкэнд базы данных. Попробуйте использовать 'django.db.backends.XXX', где XXX является одним из: 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3' – emisilva

10

Если вы можете установить pymysql - который хорошо работает для меня с Python 3.4 - добавьте эти строки в файл manage.py в Django:

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

Это сделает pymysql функцию как MySQLdb и работал для меня ,

+0

Это решило проблему для меня локально, но когда я развожу ее на Elastic Beanstalk Я снова получаю старый «Нет модуля с именем« MySQLdb ». –

+0

больше не требуется в последних версиях Django. –

10

pip install mysqlclient работает для меня python3.5

10

Ни один из существующих ответов работал для меня на Ubuntu Server 16.04, так что я побежал:

sudo apt-get install libmysqlclient-dev 
sudo -H pip3 install mysqlclient 

Первая команда получить меня MySQL конфигурации, в которой нуждаются вторая команда.

Смежные вопросы