101

我在尝试连接到 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.
    }
}

非常感谢您的帮助 !!

4

25 回答 25

140

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

pip install mysql-python

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

sudo pip install mysql-python
于 2013-03-09T16:02:41.340 回答
45

如果您在尝试使用 pip 安装 mysqlclient 时遇到错误,您可能缺少 mysql 开发库。通过运行安装它:

apt-get install libmysqlclient-dev

并再次尝试安装 mysqlclient:

pip install mysqlclient
于 2015-12-18T23:11:24.277 回答
40

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

尝试
sudo apt-get install python-mysqldb

于 2013-05-24T12:15:10.480 回答
14

我的答案类似于@Ron-E,但我得到了一些错误/更正,所以我将我的步骤放在下面,用于 Mac OSX on 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”!

于 2014-05-15T14:30:22.483 回答
12

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

  1. 从这里下载 MySql for Python
  2. 解压下载的文件。在终端窗口中执行以下操作:tar xvfz downloade.tar。
  3. cd /到解压目录
  4. 运行 sudo python setup.py install
  5. 如果你得到类似这样的错误:“环境错误:/usr/local/bin/mysql_config not found”然后尝试添加路径如下:“export PATH=$PATH:/usr/local/mysql/bin”。但是 id 对我没有帮助,我找到了另一个解决方案。在命令执行错误输出结束时,如下所示:

    mysql_config 中的文件“/path_to_file/MySQL-python-1.2.4b4/setup_posix.py”,第 25 行引发 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的人有所帮助。:)

于 2013-10-02T09:35:46.583 回答
8

您缺少 pythonmysqldb库。使用这个命令(对于 Debian/Ubuntu)来安装它: sudo apt-get install python-mysqldb

于 2014-01-29T00:13:52.743 回答
8

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

pip install mysqlclient
于 2018-08-25T19:34:07.493 回答
7

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

sudo apt-get install python3-dev libmysqlclient-dev 

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

于 2019-02-17T06:20:14.647 回答
7

我已经在这个环境中解决了这个问题:

$ 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 数据库:

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
于 2019-03-10T10:18:06.447 回答
6

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

于 2013-11-20T09:13:59.860 回答
5

对于 Ubuntu 16.04 和 18.04 或 python 3 版本

sudo apt-get install python3-mysqldb
于 2017-12-12T05:43:19.467 回答
3

在 Ubuntu 上,建议使用发行版存储库。

sudo apt-get install python-mysqldb
于 2014-01-18T21:19:23.140 回答
3

尝试:

pip install mysqlclient

我建议在虚拟环境中使用它。

于 2019-10-16T17:39:15.613 回答
2

使用与 Will 相同的错误消息,它首先安装 mysql 对我有用,因为将在安装过程中添加丢失的文件。所以之后

brew install mysql

pip install mysql-python

运行没有错误。

于 2015-05-05T17:30:36.057 回答
2

这也发生在我身上,我相信这已经成为一个常见的错误,不仅对于 Django 开发人员而且对于 Flask 也是如此,所以我解决这个问题的方法是使用 brew。

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

这样每个问题都解决了,两个框架都工作得很好。

PS:对于那些使用 macports 的人(比如我自己),这可能是一个问题,因为 brew 在不同的级别上工作,我的建议是使用 brew 而不是 macports

我希望我能有所帮助。

于 2016-11-22T11:56:30.140 回答
2

我认为是版本错误。

尝试按以下顺序安装:

  1. sudo apt-get install python3-mysqldb

  2. pip3 install mysqlclient

  3. python3 manage.py makemigrations

  4. python3 manage.py migrate

于 2020-11-03T07:18:15.250 回答
1

我遇到了同样的问题。以下解决了我的问题

在你的 shell 中运行pip install pymysql

然后,编辑项目源目录中的 init.py 文件(与 settings.py 相同),然后

添加:

导入 pymysql

pymysql.install_as_MySQLdb()

这应该可以解决问题。

于 2019-02-13T05:12:04.060 回答
0

只是为了添加其他答案,如果您使用的是 Django,建议您在安装 Django 之前安装 mysql-python。

于 2013-08-20T08:19:35.623 回答
0

我在这上面浪费了很多时间。结果表明 Python 3 不支持默认数据库库。您必须使用不同的.

于 2016-10-01T18:21:38.090 回答
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
于 2016-11-06T07:08:49.987 回答
0

面临类似的问题。我尝试mysql-python使用 pip 安装,但由于 gcc 依赖错误而失败。

对我有用的解决方案

conda install mysql-python

请注意,我已经安装了 anaconda,它没有 gcc 依赖项。

于 2017-11-22T14:16:06.937 回答
0

来源

安装(如果没有找到):

pip install mysql.connector

设置:

'default': {
    'ENGINE': 'mysql.connector.django',
    'NAME': '...',
    'HOST': '...',
    'PORT': '3306',
    'USER': '...',
    'PASSWORD': '...',
}
于 2020-12-29T10:15:11.187 回答
0

当我想使用 MySQL 作为默认数据库时,我遇到了类似的错误。
这些错误可能是由于尚未安装mysqlclient造成的。
这可以使用命令行安装;
pip install mysqlclient (对于最新版本的python)
pip install mysql-python(对于旧版本的python)
就我而言,在满足此要求后,我仍然遇到同样的错误,并解决如下; 在您的django 项目目录中,选择 venv 目录并在这些目录下,
选择pyvenv.cfg文件,然后在询问您是否要编辑此文件的对话框上单击允许。在这个文件中,
include-system-site-packages设置为false. 所以像这样把这行代码改成true;

include-system-site-packages = true

现在一切正常

于 2021-03-05T02:21:15.050 回答
0

试试这个,只需使用 pip:在 Windows 上,推荐的命令是:

python -m pip install mysqlclient

在虚拟环境中使用它

于 2021-09-03T13:02:43.367 回答
-3

也许您可以尝试以下操作模式:
sudo python manage.py runserver 0.0.0.0:8000

于 2017-07-26T05:54:08.570 回答