最近自己想写一个网站,用过Django,Flask,Tornado三个web框架,最近一次使用的框架是Tornado,由于Django好长时间没有使用了,所以也想借机会仔细回顾一下Django的内容,谁知以上来就来了一个报错,具体如下:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
于是去Django官网查了Django2.0的文档,然而并没有神马效果,文档如下:
ENGINE
Default: '' (Empty string)
The database backend to use. The built-in database backends are:
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
You can use a database backend that doesn't ship with Django by setting ENGINE to a fully-qualified path (i.e. mypackage.backends.whatever).
以前使用SqlAlchemy连接MySQL数据库的时候也遇到国这个问题,但没有记录下来。现在由于大多数项目都用的是python3,一些用python2写的MySQL的ORM框架都不能用了,不是安装不上就是报错。于是去网上查了一下才想起以前的解决方法。
首先,pymysql是支持python3的,你要先装上pymysql。然后就是pymysql包的__init__.py文件中有一个install_as_MySQLdb方法,代码如下:
def install_as_MySQLdb():
"""
After this function is called, any application that imports MySQLdb or
_mysql will unwittingly actually use
"""
sys.modules["MySQLdb"] = sys.modules["_mysql"] = sys.modules["pymysql"]
路径是python3.X/site-packages/pymysql/__init___.py。
解决Django报错
在Django的setting.py的头部加入如下代码:
import pymysql
pymysql.install_as_MySQLdb() # 修复django找不到MySQLdb
bingo,可以安静的做个美男子了,哈哈!