MySQL Connector / Python作为Django引擎?

时间:2016-06-16 00:37:51

标签: python mysql django mysql-connector-python

即使经过数小时和数小时的谷歌搜索,也无法找到答案。搜索堆栈溢出。我向你们保证,我已经看到了所有可能被视为相关的答案,但这些答案都没有解决我所面临的问题。没有进一步的麻烦 -

目前在shell中我可以这样做:

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 文件以将数据库引擎设置为

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'之间有什么区别?

2 个答案:

答案 0 :(得分:1)

  

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

首先是前者是推荐的方法,而后者则不是。前者完全支持,但后者需要1.1.x版本,django文档中还有一个警告,即更新版本的django可能无法完全支持它。

MySQL DB API Drivers

  

Python数据库API在PEP 249中有描述.MySQL有三个   实施此API的主要驱动因素:

     

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

     

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

答案 1 :(得分: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'
    }
}