Python3 + MySql: 加载MySQLdb模块时出错:没有名为'MySQLdb'的模块
我刚开始学习Python,想要设置一个Django项目来使用MySql。我看过相关的文档,也浏览了一些StackOverflow上的帖子,但还是搞不定。
当我在Django中尝试运行迁移命令时,出现了以下错误:
Error loading MySQLdb module: No module named 'MySQLdb'
我安装了推荐的 MySql Python连接器(2.0.1),选择了Ubuntu(因为我在使用Mint Linux)。安装过程没有问题,但我还是遇到了错误。我是不是不需要把这个库添加到项目里?看起来Python应该能自动识别并正常运行。那我该怎么办呢?谢谢。
补充一下:我用的是Python 3.4,很多常见的解决方案还是基于2.7的,所以不适用,而我尝试过的所有3.0的解决方案也都没成功。
5 个回答
我用的是 Python 3.9.13,运行命令 pip install mysqlclient 可以成功安装。
如果你能安装pymysql——我在Python 3.4上用得很好——那么在你的Django项目中的manage.py文件里添加以下几行代码:
try:
import pymysql
pymysql.install_as_MySQLdb()
except ImportError:
pass
这样做会让pymysql像MySQLdb那样工作,对我来说是有效的。
我用的是python3.5,运行 pip install mysqlclient
这个命令可以正常安装。
在Ubuntu Server 16.04上,之前的回答都没能解决我的问题,所以我执行了:
sudo apt-get install libmysqlclient-dev
sudo -H pip3 install mysqlclient
第一个命令给我提供了第二个命令所需要的mysql配置。
我需要看看你在settings.py文件中关于DATABASES的配置,但看起来它试图加载的是MySQLDB,而不是你安装的Mysql Python连接器。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/#!topic/django-developers/8r_RVmUe5ys
Django 1.7的文档推荐使用mysqlclient驱动……
docs.djangoproject.com/en/1.7/ref/databases/ --查看关于Mysql DB API驱动的部分
可以在这里找到这个客户端:pypi.python.org/pypi/mysqlclient……
-Scott