引子
关于Django2版本连接MySQL发生的问题以及修改源码的解决方法参考下面这篇文章:
但是,上面这种修改源码的方法在生产环境中使用的话会有很多问题。
本文为大家详细讲解如何在不修改Django源码的情况下解决这个问题。
Django中的源码解析
我们来看一下我们使用的Python解释器(可以是全局的也可以是虚拟环境的)中django包有关MySQL配置的源码。
源码位置是:
(你的Python解释器安装目录或者虚拟环境目录)\django21\Lib\site-packages\django\db\backends\mysql\base.py
这个base.py文件中的内容有点多,我们把最关键的部分挑出来解释一下:
"""MySQL database backend for Django.
Requires mysqlclient: https://pypi.org/project/mysqlclient/ # 之前没安装的话得从pypi中下载mysqlclient包"""
importrefrom django.core.exceptions importImproperlyConfiguredfrom django.db importutilsfrom django.db.backends importutils as backend_utilsfrom django.db.backends.base.base importBaseDatabaseWrapperfrom django.utils.functional importcached_propertytry:importMySQLdb as Database # 导入MySQLdb模块exceptImportError as err:raiseImproperlyConfigured('Error loading MySQLdb module.\n'
'Did you install mysqlclient?')fromerrfrom MySQLdb.constants import CLIENT, FIELD_TYPE #isort:skip
from MySQLdb.converters import conversions #isort:skip
#Some of these import MySQLdb, so import them after checking if it's installed.
from .client import DatabaseClient #isort:skip
from .creation import DatabaseCreation #isort:skip
from .features import DatabaseFeatures #isort:skip
from .introspection import DatabaseIntrospection #isort:skip
from .operations import DatabaseOperations #isort:skip
from .schema import DatabaseSche