解决Django使用mysqlclient连接MySQL,而无法pip install mysqlclient 问题

解决Django使用mysqlclient连接MySQL,而无法pip install mysqlclient 问题

详情:
    该问题主要出现在Django在Ubuntu系统中连接MySQL时会报错:
    
        django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
        Did you install mysqlclient?
        
    然而,ubuntu安装mysqlclient时会出现很多麻烦的问题

策略:使用pymysql连接MySQL

  • 安装pymysql
pip3 install pymysql
  • 修改项目的__init__.py
import pymysql
pymysql.install_as_MySQLdb()

此时运行项目,会保错:

......
File "/home/brightxu/Django/WGApps/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 36, in <module>
    raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

主要是pymysql与mysqlclient版本不一致的问题

  • 修改环境

根据错误提示,打开文件venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py ,找到第36行代码,将34 ~ 36 行的代码注释掉:

# version = Database.version_info
# if version < (1, 3, 13):
#     raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)

然后还会保错:

......
File "/home/brightxu/Django/WGApps/venv/lib/python3.6/site-packages/django/db/backends/mysql/operations.py", line 146, in last_executed_query
    query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'

根据错误提示,打开文件venv/lib/python3.6/site-packages/django/db/backends/mysql/operations.py ,找到第146行代码,将145和 146 行的代码注释掉:

        # if query is not None:
        #     query = query.decode(errors='replace')
  • 然后就可以愉快的玩耍了
发布了16 篇原创文章 · 获赞 17 · 访问量 2067

猜你喜欢

转载自blog.csdn.net/weixin_44129085/article/details/103358683