解决Django找不到MySQLdb报错

最近自己想写一个网站,用过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,可以安静的做个美男子了,哈哈!

猜你喜欢

转载自blog.csdn.net/layswift/article/details/80872337