Python3 + MySql:加载MySQLdb模块时出错:没有名为' MySQLdb'

时间:2014-10-25 09:24:49

标签: python mysql django mysql-python

我是Python的新手,并尝试设置一个Django项目来使用MySql。我已经阅读了有关该主题的文档以及其他一些StackOverflow帖子,但我仍然无法使其工作。

当我尝试在Django中运行迁移时,我收到以下错误:

Error loading MySQLdb module: No module named 'MySQLdb'

我已经安装了推荐的MySql Python Connector (2.0.1)选择Ubuntu(因为我在Mint Linux上)。它安装正确。我仍然得到错误。我不需要将这个库添加到项目或其他任何东西,对吗?看起来python应该只是意识到这一点并成功运行。我能做什么?感谢。

编辑:我忘了提到:我正在运行Python 3.4 - 许多典型的解决方案仍在使用2.7,所以它们不起作用,所有3.0的解决方案都试过没有成功。

5 个答案:

答案 0 :(得分:17)

在Ubuntu Server 16.04上,现有的答案都没有对我有用,所以我跑了:

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

第一个命令让我获得第二个命令所需的mysql配置。

答案 1 :(得分:14)

pip install mysqlclient  适用于我python3.5

答案 2 :(得分:12)

我需要在settings.py中看到你的DATABASES配置,但看起来它正在尝试加载MySQLDB而不是你安装的Mysql Python Connector。 DATABASES看起来应该是这样的:

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

如果您希望使用South:

www.pythonanywhere.com/wiki/UsingMySQL

您可能需要注意Oracle连接器是GPL,使用该代码可能存在许可证问题。见这里:

groups.google.com/forum /#!话题/ Django的开发者/ 8r_RVmUe5ys

Django 1.7文档建议使用mysqlclient驱动程序......

docs.djangoproject.com/en/1.7/ref/databases/ - 请参阅有关Mysql DB API驱动程序的部分

该客户的

pypi.python.org/pypi/mysqlclient ...

-Scott

答案 3 :(得分:11)

如果您可以安装pymysql - 这对我来说非常适合Python 3.4 - 那么将这些行添加到Django中的manage.py文件中:

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

这将使pymysql功能像MySQLdb一样,并为我工作。

答案 4 :(得分:0)

如果像我一样,您正在使用Linux安装,并且在大多数情况下Linux仍需要Python 2.7。这意味着

pip install mysqlclient

将安装MySQL客户端2.7,该客户端是从Python 3分割而来的。要使其安装到3.x,您需要使用

pip3 install mysqlclient

我不必安装任何软件包,但是已经安装了mysql-common(Raspbian安装),因此您的行程可能有所不同