django.core.exceptions.ImproperlyConfigured:加载MySQLdb模块时出错:没有名为MySQLdb的模块

get*_*ted 80 python mysql database django

尝试连接到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
Run Code Online (Sandbox Code Playgroud)

数据库设置::

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.
    }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助 !!

Ron*_*n E 128

看起来你没有安装python mysql包,试试:

pip install mysql-python
Run Code Online (Sandbox Code Playgroud)

或者如果不使用虚拟环境(在*nix主机上):

sudo pip install mysql-python
Run Code Online (Sandbox Code Playgroud)

  • 用python 3是:pip install mysqlclient (3认同)
  • 我正在使用虚拟环境,并且我已经安装了 mysql、django ......但是当我做 python manage.py syncdb 它给了我我发布的同样的错误 (2认同)
  • 这在 python3 中不起作用。需要 ConfigParser,但在 python3 中不可用 (2认同)

Ras*_*shi 36

你必须安装python-mysqldb - MySQL的Python接口

尝试
sudo apt-get install python-mysqldb


Psd*_*ddp 33

如果您尝试使用pip安装mysqlclient时出错,则可能缺少mysql开发库.通过运行安装它:

apt-get install libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

并再次尝试安装mysqlclient:

pip install mysqlclient
Run Code Online (Sandbox Code Playgroud)

  • 这是`pip install mysqlclient`.我忘了把它添加到我的requirements.txt文件中,所以即使MySQL数据库存在并填充,我的Django Web服务器也无法与它交互. (2认同)

Kha*_*lla 12

当我在Mac OS X Mountain Lion中使用python,mysql,sequel pro应用程序为PyCharm设置Django开发环境时,我得到的错误与此主题的所有者相同.但是,对于那些在Mac OS Mountain Lion x86_x64下运行python-mysqldb的人的答案(MySql和Python也应该是相同的架构)并且已经尝试了所有像pip等等.为了解决这个问题,请执行以下步骤:

  1. 这里下载MySql for Python
  2. Untar下载文件.在终端窗口中执行以下操作:tar xvfz downloade.tar.
  3. cd /到untared目录
  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 not found"%(mysql_config.path,))

  6. 用vim打开setup_posix.py并转到第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的人有所帮助.:)


Wil*_*ill 11

我的答案类似于@ Ron-E,但我还有一些错误/更正,所以我在Mavericks和Python 2.7.6上为Mac OSX做了以下步骤.

  1. 安装Python mysql包(如果收到成功消息,则忽略以下步骤)

    pip install mysql-python
    
    Run Code Online (Sandbox Code Playgroud)
  2. 当我做了上述操作时,我收到错误"EnvironmentError:mysql_config not found" 在此输入图像描述 为了解决这个问题,我在终端进行了以下操作:

    export PATH=$PATH:/usr/local/mysql/bin
    
    Run Code Online (Sandbox Code Playgroud)
  3. 当我重新开始第1步时,我收到一个新错误"错误:命令'cc'失败,退出状态为1" 在此输入图像描述 为了解决这个问题,我在终端进行了以下操作:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我重新开始第1步并获得成功消息'Successfully installed mysql-python'!


sel*_*mar 9

如果您使用的是Python 3.4或更高版本,则必须安装

sudo apt-get install python3-dev libmysqlclient-dev 
Run Code Online (Sandbox Code Playgroud)

在您的终端中。然后安装pip install mysqlclient在您的虚拟环境或安装 pip 的位置。


小智 8

这是因为它没有找到 sql 连接器。尝试:

pip install mysqlclient
Run Code Online (Sandbox Code Playgroud)


rud*_*dra 7

从Windows环境下载并安装Mysql-python. http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python.


Hai*_*mei 7

你错过了python mysqldb库.使用此命令(对于Debian/Ubuntu)来安装它: sudo apt-get install python-mysqldb


Jav*_*tes 7

我在这种环境下解决了这个问题:

$ pyenv --version
pyenv 1.2.9

$ python --version
Python 3.7.2

$ python -m django --version
2.1.7
Run Code Online (Sandbox Code Playgroud)

./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,
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

如果使用'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
Run Code Online (Sandbox Code Playgroud)

请注意,这$ pip install mysql-python对我不起作用。

请注意,如果您使用 'ENGINE': 'django.db.backends.mysql',您应该安装驱动程序执行:
$ pip install mysqlclient

最后执行:
$ python manage.py migrate

如果没问题,python 会创建所有这些表 id 数据库:

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
Run Code Online (Sandbox Code Playgroud)


Gow*_*man 5

对于 Ubuntu 16.04 和 18.04 或 python 3 版本

sudo apt-get install python3-mysqldb
Run Code Online (Sandbox Code Playgroud)