django.core.exceptions.ImproperlyConfigured: ошибка при загрузке модуля MySQLdb: нет модуля с именем MySQLdb

96

Проблема, с которой я сталкиваюсь, пытаясь подключиться к базе данных для mysql. Я также дал настройки базы данных, которые я использовал.

 Traceback (most recent call last):
 File "manage.py", line 10, in <module>
 execute_from_command_line(sys.argv)
 File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
utility.execute()
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/home/arundhati/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/sql.py", line 9, in <module>
from django.db import models
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 27, in load_backend
return import_module('.base', backend_name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 17, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Настройки базы данных:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'ar_test_db',                      # Or path to database file if using 
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or   '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

Большое спасибо за помощь !!

начать это
источник

Ответы:

136

Похоже, у вас не установлен пакет python mysql, попробуйте:

pip install mysql-python

или, если виртуальная среда не используется (на хостах * nix):

sudo pip install mysql-python
Рон Э
источник
Вы используете виртуальную среду? Я рекомендую вам просто держать вещи в порядке. Если это не вариант, вам нужно запустить pip с привилегиями суперпользователя: sudo pip install mysql-python
Рон Э,
2
Я использую виртуальный env, и я установил mysql, django ... однако, когда я использую python manage.py syncdb, я
получаю
у меня случайно проблема с версией? Я использую django 1.5, python 2.7.3 с моим sql (14.14 для debian)
getitstarted
4
с python 3: pip install mysqlclient
sadalsuud
1
Это в python3 не работает. требуется ConfigParser, который недоступен в python3
gogagubi
40

вам необходимо установить python-mysqldb - интерфейс Python для MySQL

Пытаться
sudo apt-get install python-mysqldb

Раши
источник
38

Если вы получаете ошибки при установке mysqlclient с помощью pip, возможно, вам не хватает библиотеки mysql dev. Установите его, запустив:

apt-get install libmysqlclient-dev

и попробуйте еще раз установить mysqlclient:

pip install mysqlclient
Psddp
источник
2
Это было pip install mysqlclient. Я забыл добавить это в свой файл requirements.txt, поэтому, хотя база данных MySQL была там и была заполнена, мой веб-сервер Django не мог с ней взаимодействовать.
Blairg23,
спасибо, этот ответ спас мне день, я пытался заставить mysql работать с django в течение 2 дней :)
rishabhr0y
13

Мой ответ похож на @ Ron-E, но у меня есть еще несколько ошибок / исправлений, поэтому я помещаю свои шаги ниже для Mac OSX на Mavericks и Python 2.7.6.

  1. Установите пакет Python mysql (если вы получили сообщение об успехе, проигнорируйте следующие шаги)

    pip install mysql-python
    
  2. Когда я сделал это, я получил ошибку «EnvironmentError: mysql_config not found» введите описание изображения здесь Чтобы исправить это, я сделал следующее в терминале:

    export PATH=$PATH:/usr/local/mysql/bin
    
  3. При повторном выполнении шага 1 я получаю новую ошибку: «Ошибка: команда 'cc' завершилась неудачно со статусом выхода 1». введите описание изображения здесь Чтобы исправить это, я сделал следующее в терминале:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
    
  4. Я повторил шаг 1 и получил сообщение об успешном завершении установки mysql-python!

Будет
источник
Спасибо за предложение. Я первым понял вашу проблему.
user2772346
Я пошел вашим путем, но в моем случае всегда возникает первая ошибка. И для `export CFLAGS = -Qunused-arguments` терминал выдает эту ошибку:-bash: export: =-Qunused-arguments': not a valid identifier
RegarBoy
12

Когда я настраивал среду разработки Django для PyCharm в Mac OS X Mountain Lion с приложением python, mysql, sequel pro, у меня возникла ошибка, такая же, как у владельца этого потока. Однако мой ответ для тех, кто запускает python-mysqldb под Mac OS Mountain Lion x86_x64 (MySql и Python также должны иметь одинаковую архитектуру) и уже пробовали все, например pip и т. Д. Чтобы решить эту проблему, выполните следующие шаги:

  1. Загрузите MySql для Python отсюда
  2. Разверните скачанный файл. В окне терминала выполните следующие действия: tar xvfz downloade.tar.
  3. cd / в необработанный каталог
  4. Запустите sudo python setup.py install
  5. Если вы получаете сообщение об ошибке примерно такого вида: «Ошибка среды: / usr / local / bin / mysql_config не найден», попробуйте добавить следующий путь: «export PATH = $ PATH: / usr / local / mysql / bin». Но id мне не помог, и я нашел другое решение. В конце выполнения команды выводится ошибка, которая выглядит так:

    Файл "/path_to_file/MySQL-python-1.2.4b4/setup_posix.py", строка 25, в mysql_config поднять EnvironmentError ("% s не найден"% (mysql_config.path,))

  6. Откройте setup_posix.py с помощью vim и перейдите к строке 25 (в вашем случае она может быть другой, если только это не та же версия).

  7. Строка 25 должна выглядеть так после редактирования, если ваш mysql не имеет символической ссылки, например '/ usr / local / mysql / bin /':

    f = popen("%s --%s" % ('/usr/local/mysql/bin/mysql_config', what))

  8. После этого я получил еще одну ошибку:

    django.core.exceptions.ImproperlyConfigured: Ошибка при загрузке модуля MySQLdb: dlopen (/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2) : Библиотека не загружена: libmysqlclient.18.dylib Ссылка на: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Причина: изображение не найдено

  9. Наконец, в консоли я сделал следующее:

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

На данный момент все работает нормально. Так что я надеюсь, что это будет полезно для тех, кто пользуется Mac. :)

Хамидулла
источник
Большое спасибо. Мне потребовалась почти неделя, чтобы запустить свой первый проект с использованием mysql, ха-ха. Уф ...
Avigit
Большое спасибо, чувак! ты спас мне день! Я использовал Mac и получал ту же проблему.
user2772346
7

Вам не хватает mysqldbбиблиотеки Python . Используйте эту команду (для Debian / Ubuntu), чтобы установить его: sudo apt-get install python-mysqldb

Haimei
источник
Это ответ, но я думаю, было бы здорово, если бы вы могли добавить больше деталей, чем одну строку. Благодарность!
Uli Köhler
Вышеупомянутая команда поможет нам установить интерфейс Python в базу данных MySQL.
Haimei
7

Это потому, что он не нашел соединителя sql. пытаться:

pip install mysqlclient
Ананд Пракаш
источник
5

Для версий Ubuntu 16.04 и 18.04 или python 3

sudo apt-get install python3-mysqldb
Gowthaman D
источник
5

Я решил эту проблему в этой среде:

$ pyenv --version
pyenv 1.2.9

$ python --version
Python 3.7.2

$ python -m django --version
2.1.7

./settings.py

DATABASES = {
    'default': {
        'NAME': 'my_db_name',
        'ENGINE': 'mysql.connector.django',   # 'django.db.backends.mysql'
        'USER': '<user>',
        'PASSWORD': '<pass>',
        'HOST': 'localhost',
        'PORT': 3306,
        'OPTIONS': {
            'autocommit': True,
        },
    }
}

Если вы используете 'ENGINE': 'mysql.connector.django', установите драйвер, выполнив:

$ pip install mysql-connector-python
Successfully installed mysql-connector-python-8.0.15 protobuf-3.7.0 six-1.12.0

Обратите внимание, $ pip install mysql-pythonэто не сработало для меня.

Обратите внимание, что если вы используете 'ENGINE': 'django.db.backends.mysql', вы должны установить драйвер, выполнив:
$ pip install mysqlclient

Наконец, выполните:
$ python manage.py migrate

Если все в порядке, python создает все эти таблицы id database:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session
ХавьерФуэнтес
источник
django.core.exceptions.ImproperlyConfigured: 'django.db.backends.django' не является доступным сервером базы данных. Попробуйте использовать 'django.db.backends.XXX', где XXX - одно из: 'mysql', 'oracle', 'postgresql', 'sqlite3' Я использовал 'ENGINE': 'mysql.connector.django' с pip3 install mysql -connector-python Это все еще не сработало
mountainLion
4

Если вы используете pyhton версии 3.4 или выше. вы должны установить

sudo apt-get install python3-dev libmysqlclient-dev 

в терминале. затем установите его pip install mysqlclientв виртуальном окружении или в том месте, где вы установили pip.

сельвакумар
источник
3

В Ubuntu рекомендуется использовать репозиторий дистрибутивов.

sudo apt-get install python-mysqldb
Гаурав Агарвал
источник
2

С тем же сообщением об ошибке, что и Уилл, мне удалось сначала установить mysql, так как отсутствующий файл будет добавлен во время установки. Так после

brew install mysql

pip install mysql-python

прошел без ошибок.

cmdAmir
источник
Команда "/ usr / bin / python -u -c" import setuptools, tokenize; __ file __ = '/ private / var / folder / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python / setup.py'; f = getattr (tokenize, 'open', open) ( файл ); code = f.read (). replace ('\ r \ n', '\ n'); f.close (); exec (compile (code, file , 'exec')) "install --record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record/install-record.txt --single-version-external-managed --compile" завершился ошибкой код 1 в / private / var / folder / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /
tisuchi
2

Это случилось и со мной, и я считаю, что это стало распространенной ошибкой не только для разработчиков Django, но и для Flask, поэтому я решил эту проблему с помощью brew.

  1. brew install mysql
  2. sudo pip install mysql-python

Таким образом была решена каждая проблема, и оба фреймворка работали абсолютно нормально.

PS: Для тех, кто использует macports (например, я), это может быть проблемой, поскольку brew работает на другом уровне, мой совет - использовать brew вместо macports.

Я надеюсь, что смогу быть полезным.

пикимера
источник
1

У меня была такая же проблема. Следующее решило мою проблему

Запустите pip install pymysql в своей оболочке

Затем отредактируйте файл init.py в исходном каталоге проекта (так же, как settings.py), а затем

Добавить:

импортировать pymysql

pymysql.install_as_MySQLdb ()

Это должно решить проблему.

Вайшнав Раджа
источник
«Затем отредактируйте файл init.py в исходном каталоге проекта» - вы имеете в виду __init__.py?
Alex Yu
1

пытаться:

pip install mysqlclient

Рекомендую использовать в виртуальной среде.

Омид Эстаджи
источник
0

Просто чтобы добавить к другим ответам, если вы используете Django, рекомендуется установить mysql-python ПЕРЕД установкой Django.

Anoyz
источник
0

если ошибка выглядит так

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module:
dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: 
/usr/local/opt/mysql/lib/libmysqlclient.20.dylib
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so

затем попробуйте:

pip install python-mysqldb
blueChair
источник
0

Столкнулся с аналогичной проблемой. Я попытался установить mysql-pythonс помощью pip, но это не удалось из-за ошибок зависимости gcc.

Решение, которое сработало для меня

conda install mysql-python

Обратите внимание, что у меня уже была установлена ​​анаконда, у которой не было зависимости от gcc.

Аюш Вацяян
источник
не могли бы вы подробнее остановиться на этом
Ayush Ватсьяян
0

Думаю, это ошибка версии.

попробуйте установить это в следующем порядке:

  1. sudo apt-get install python3-mysqldb

  2. pip3 install mysqlclient

  3. python3 manage.py makemigrations

  4. python3 manage.py migrate

Сувид Джайн
источник
-2

Похоже, у вас нет разрешения на папку Python. Пытатьсяsudo chown -R $USER /Library/Python/2.7

омкар гул
источник
-3

Возможно, вы можете попробовать следующий режим работы:
sudo python manage.py runserver 0.0.0.0:8000

Янлун Сюй
источник