【发布时间】:2017-10-28 10:11:50
【问题描述】:
我正在尝试在 Debian 机器上配置在 Python3 下运行的 Django,以使用 MariaDB 作为其后端。如果我按照教程更改我的mysite/settpings.py,即
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'foo',
'USER': 'tim',
'PASSWORD': 'swordfish',
'HOST': 'localhost'
}
}
我有很多悲伤,最终导致
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/mysql/base.py", line 30, in <module>
'Did you install mysqlclient or MySQL-python?' % e
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?
现在,很明显,MySQLdb 在 Python3 上不起作用,虽然我已经安装了 mysql 连接器包,但似乎不起作用。
如果我尝试使用 MySQL 的连接器 recommended
即
DATABASES = {
'default': {
'ENGINE': 'mysql.connector.django',
'NAME': 'foo',
'USER': 'tim',
'PASSWORD': 'swordfish',
'HOST': 'localhost'
然后我感到非常悲伤
django.core.exceptions.ImproperlyConfigured: 'mysql.connector.django' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'postgresql', 'sqlite3'
Error was: cannot import name 'BaseDatabaseFeatures'
有什么建议吗?
更新
根据 Matt Seymour 的建议,如果我尝试安装 mysqlclient 的 pip(实际上是 pip3,因为我的系统 Python 仍然是 2.x),我会得到以下信息...
tim@merlin:~/mysite$ sudo pip3 install mysqlclient
Collecting mysqlclient
Using cached mysqlclient-1.3.10.tar.gz
Complete output from command python setup.py egg_info:
/bin/sh: 1: mysql_config: not found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-9uub69zo/mysqlclient/setup.py", line 17, in <module>
metadata, options = get_config()
File "/tmp/pip-build-9uub69zo/mysqlclient/setup_posix.py", line 44, in get_config
libs = mysql_config("libs_r")
File "/tmp/pip-build-9uub69zo/mysqlclient/setup_posix.py", line 26, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))
OSError: mysql_config not found
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-9uub69zo/mysqlclient
我使用 MariaDB 而不是 MySQL 的事实在这里是否很重要?
【问题讨论】:
-
你是如何安装 python-mysql 包的?我强烈建议在任何系统包上使用 virtualenv。激活你的环境然后
pip install mysqlclient
标签: mysql django python-3.x