omg*_*rok 5 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>
Run Code Online (Sandbox Code Playgroud)
验证我是否安装了此模块。但是,当我尝试转到settings.py文件以将DATABASE ENGINE设置为
DATABASES = {
'default': {
'ENGINE': 'mysql.connector.django',
'NAME': 'mydb',
'USER': 'root',
'PASSWORD': 'test123',
'HOST': '127.0.0.1',
'PORT': '3306'
}
}
Run Code Online (Sandbox Code Playgroud)
并尝试启动我的服务器,我不断收到错误消息:
django.core.exceptions.ImproperlyConfigured: 'mysql.connector.django'
isn't an available database backend.
Run Code Online (Sandbox Code Playgroud)
不知道如何解决这个问题。我使用的是 Django 版本 1.9.7,上面的代码片段中显示了 Python 版本
使用 'mysql.connector.django' 与使用 'django.db.backends.mysql' 有什么区别?
使用 'mysql.connector.django' 与使用 'django.db.backends.mysql' 之间有什么区别?
首先推荐使用前者,而不推荐使用后者。前者是完全支持的,但后者需要 1.1.x 版本,并且 django 文档中还有一个警告,最新版本的 django 可能不完全支持它。
Python 数据库 API 在 PEP 249 中进行了描述。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 则包含了自己的适配器。