5

即使经过数小时的谷歌搜索和搜索堆栈溢出,也无法找到答案。我向你保证,我已经看到了所有可能被认为相关的答案,但没有一个答案能解决我面临的问题。无需再费周折 -

目前在外壳中我可以这样做:

Python 2.7.11+ (default, Apr 17 2016, 14:00:29)
[GCC 5.3.1 20160413] on linux2
Type "help", "copyright", "credits" or "license" for more information. 
>>> from distutils.sysconfig import get_python_lib
>>> print get_python_lib()
/usr/lib/python2.7/dist-packages
>>> import mysql.connector
>>> db = mysql.connector.connect(user='root', password='test123', host='127.0.0.1', database='mydb')
>>> db
<mysql.connector.connection.MySQLConnection object at 0x7fd3a80536d0>

验证我是否安装了这个模块。但是,当我尝试转到settings.py文件以将DATABASE ENGINE设置为

DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': 'mydb',
        'USER': 'root',
        'PASSWORD': 'test123',
        'HOST': '127.0.0.1',
        'PORT': '3306'
    }
}

并尝试启动我的服务器我不断收到错误:

django.core.exceptions.ImproperlyConfigured: 'mysql.connector.django'
isn't an available database backend.

不知道如何解决这个问题。我使用的是 Django 版本 1.9.7,Python 版本显示在上面的代码片段中

使用 'mysql.connector.django' 与使用 'django.db.backends.mysql' 有什么区别?

4

2 回答 2

2

使用 'mysql.connector.django' 与使用 'django.db.backends.mysql' 有什么区别?

从前者开始是推荐的方法,而后者不是。前者得到完全支持,但后者需要 1.1.x 版本,并且 django 文档中也有一个警告,即最新版本的 django 可能不完全支持它。

MySQL 数据库 API 驱动程序

PEP 249 中描述了 Python 数据库 API。MySQL 具有三个实现此 API 的突出驱动程序:

MySQLdb 是一个由 Andy Dustman 开发和支持十多年的原生驱动程序。mysqlclient 是 MySQLdb 的一个分支,它特别支持 Python 3,可以用作 MySQLdb 的替代品。在撰写本文时,这是将 MySQL 与 Django 一起使用的推荐选择。MySQL Connector/Python 是来自 Oracle 的纯 Python 驱动程序,不需要 MySQL 客户端库或标准库之外的任何 Python 模块。所有这些驱动程序都是线程安全的并提供连接池。MySQLdb 是目前唯一不支持 Python 3 的。

除了 DB API 驱动程序之外,Django 还需要一个适配器来从其 ORM 访问数据库驱动程序。Django 为 MySQLdb/mysqlclient 提供了一个适配器,而 MySQL Connector/Python 包含了它自己的适配器。

于 2016-06-16T02:08:07.497 回答
0

经过一天的搜索,这是我成功的解决方案:先安装以下软件包

django==2.2.15
mysql-connector-python==8.0.23
django-mysql==3.9.0

然后你可以在设置文件中配置

DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': 'mydb',
        'USER': 'root',
        'PASSWORD': 'test123',
        'HOST': '127.0.0.1',
        'PORT': '3306'
    }
}
于 2021-06-29T10:23:53.413 回答