mysql - 无法让 MySQL/MariaDB 在 Fedora 24 上与 Django 1.10.1 和 Python 3.5 配合使用?

标签 mysql django python-3.x mariadb fedora

除了上述之外,我还使用 virtualenv 和 virtualenvwrapper。 MariaDB 服务器 10.1.17 是通过 dnf install

安装的

我正在学习第一个 Django 教程。我的运行服务器命令:

(djTut3)$ python manage.py runserver

运行正常,但有关于迁移的警告。

在第 2 部分中,此处:https://docs.djangoproject.com/en/1.10/intro/tutorial02/

我跑了:

(djTut3)$ python manage.py migrate

按照指示,得到以下错误:

ImportError: No module named 'MySQLdb'
During handling of the above exception, another exception occurred:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'

我做了很多搜索,并尝试了以下内容(除其他外),大部分来自SO:

===

$ sudo dnf install MySQL-python
<No error>

$ python3 manage.py migrate
<Same errors as before>

$ sudo dnf install mariadb-devel
Skipping packages with conflicts:
(add '--best --allowerasing' to command line to force their upgrade)

$ sudo dnf install mariadb-devel --best --allowerasing
<No error>

$ python3 manage.py migrate
<Same errors as before>

$ pip3 install mysql-python
ImportError: No module named 'ConfigParser'

$ pip3 install mysql-connector
<No error>

$ pip3 install mysql-client
_mysql.c:40:20: fatal error: Python.h: No such file or directory
#include "Python.h"
compilation terminated.
error: command 'gcc' failed with exit status 1

$sudo dnf install python-devel mysql-devel
<already installed>

===

现在我还是搞不懂

(djTut3)$ python manage.py migrate

上类,并且

(djTut3)$ python manage.py runserver

给出与迁移命令相同的错误

我的settings.py包括:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djTut3',
        'USER': os.environ['DB_USERNAME'],
        'PASSWORD': os.environ['DB_PASSWORD'],
        'HOST': '127.0.0.1',
        'PORT': '',
    }
}

任何人都可以提供一些帮助吗?

提前非常感谢您的回复。

最佳答案

这就是为什么您应该通过 pip 安装 Python 包,而不是通过操作系统包管理器。 MySQLdb 不适用于 Python 3,正如您通过 pip3 尝试时的错误所示。

您在安装 mysql-client 时遇到问题的原因可能是因为您需要 python-devel 软件包,或者任何 Fedora 等效软件包;这将是一个 dnf 安装。

但是,由于您确实成功使用了 mysql-connector,因此您可以使用它;您需要配置 Django 才能使用它,如 that library's documentation 所示,将 'django.db.backends.mysql' 替换为 'mysql.connector.django'

关于mysql - 无法让 MySQL/MariaDB 在 Fedora 24 上与 Django 1.10.1 和 Python 3.5 配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39533221/

相关文章:

Mysql从游标中动态获取值

php - MySQL 数据库中的重复行

django - 如何在 Django admin 中处理一种父类(super class)型的多个子类型

python - 在 django-rest-framework 中出现数据库验证错误后如何返回状态代码?

python-3.x - 如何在 Linux 上的 Anaconda 中安装 PyGObject?

php - 更新语句破坏数据库

mysql - TDataSet 后代

python - BaseModelFormSet __init__() 得到了一个意外的关键字参数

python-3.x - Selenium & Heroku : urllib3. 异常。ProtocolError : ('Connection aborted.' , ConnectionResetError(104, 'Connection reset by peer'))

python - 在 Python 中使用 bool 值进行索引如何工作?