Python3 + MySql: Ошибка при загрузке модуля MySQLdb: нет модуля с именем 'MySQLdb'
Я новичок в Python и пытаюсь настроить проект Django для работы с MySql. Я прочитал документацию, а также некоторые другие сообщения StackOverflow по этой теме, но я все еще не могу заставить ее работать.
Когда я пытаюсь выполнить миграцию в 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 я пробовал без успеха.
Ответы
Ответ 1
Мне нужно будет увидеть вашу конфигурацию DATABASES в settings.py, но похоже, что она пытается загрузить MySQLDB вместо установленного вами Mysql Python Connector. БАЗЫ ДАННЫХ должны выглядеть примерно так:
DATABASES = {
'default': {
'NAME': 'mydatabase',
'ENGINE': 'mysql.connector.django',
'USER': 'myuser',
'PASSWORD': 'secretpassword',
'OPTIONS': {
'autocommit': True,
},
}
}
Обратите внимание на часть ENGINE..., которая сообщает 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/#!/Тема Джанго-разработчиков/8r_RVmUe5ys
Документация Django 1.7 рекомендует использовать драйвер mysqlclient...
docs.djangoproject.com/en/1.7/ref/databases/
- см. раздел "Драйверы API Mysql DB"
pypi.python.org/pypi/mysqlclient для этого клиента...
-Скотт
Ответ 2
Если вы можете установить pymysql, который хорошо работает для меня с Python 3.4, добавьте эти строки в файл manage.py в Django:
try:
import pymysql
pymysql.install_as_MySQLdb()
except ImportError:
pass
Это сделает функцию pymysql, такую как MySQLdb, и сработает для меня.
Ответ 3
Ни один из существующих ответов не работал у меня на Ubuntu Server 16.04, поэтому я побежал:
sudo apt-get install libmysqlclient-dev
sudo -H pip3 install mysqlclient
Первая команда возвращает мне конфигурацию mysql, необходимую для второй команды.
Ответ 4
pip install mysqlclient
работает для меня python3.5