我无法将 MySQL 版本 8 连接到 Django 2.2 项目

CTh*_*mas 3 python mysql django mysql-8.0 django-2.2

我已经尝试了几乎所有的方法,包括搜索 StackOverflow 来解决这个问题,但我似乎仍然面临这个问题。我正在尝试将我的 Django 2.2.6 项目连接到我的 MySQL 版本 8 数据库,但运气不佳。

我已将 settings.py 文件更改为在数据库字典中包含以下键值对:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'portfoliodb',
        'USER': 'c**********s',
        'PASSWORD': 'XXX',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}
Run Code Online (Sandbox Code Playgroud)

打字

python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

返回以下错误:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
Run Code Online (Sandbox Code Playgroud)

我实际上有 mysqlclient,输入

pip install mysqlclient
Run Code Online (Sandbox Code Playgroud)

返回以下内容:

requirement already met (1.4.4)
Run Code Online (Sandbox Code Playgroud)

我也试过

pip install pymysql
Run Code Online (Sandbox Code Playgroud)

然后编辑 init.py 文件以具有以下代码:

import pymysql

pymysql.install_as_MySQLdb()
Run Code Online (Sandbox Code Playgroud)

同时保持我的数据库变量与上述相同。这样做会产生以下错误:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
Run Code Online (Sandbox Code Playgroud)

我已将 MySQL python 连接器下载并安装到我的系统上。

我尝试在 settings.py 中给空的 ALLOWED_HOSTS 变量作为我的本地主机的参数。

MySQL 服务器在 Django 之外运行良好,可以在终端上非常成功地访问。

我将 Databases 变量中的 Engine 替换为:

mysql.connector.django
Run Code Online (Sandbox Code Playgroud)

其中产生了以下错误代码:

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'
Run Code Online (Sandbox Code Playgroud)

CTh*_*mas 8

我设法在这里回答了我自己的问题,并考虑删除该帖子,但它可能会帮助其他人。我运行了命令

pip install mysql-connector-python
Run Code Online (Sandbox Code Playgroud)

在将 DATABASES 字典中的引擎值更改为:

'ENGINE': 'mysql.connector.django',
Run Code Online (Sandbox Code Playgroud)

MySQL数据库终于连接上了我的Django项目