文档章节

python3.7 django2.2 mysql 异常

hyhlinux
 hyhlinux
发布于 11/20 10:00
字数 362
阅读 26
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

错误日志

mysqlclient 1.3.13 or newer is required;

File "/Users/huoyinghui/workspaces/drf3/lib/python3.7/site-packages/django/db/utils.py", line 201, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/Users/huoyinghui/workspaces/drf3/lib/python3.7/site-packages/django/db/utils.py", line 110, in load_backend
    return import_module('%s.base' % backend_name)
  File "/Users/huoyinghui/workspaces/drf3/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/Users/huoyinghui/workspaces/drf3/lib/python3.7/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, pymysql PyMySQL==0.9.3 调试发现 django.db.backends.mysql.base.py 版本限制了1.3.13 以上; django 2.2.7 做了限制.

pymysql.init.py中替换了MySQLdb


VERSION = (0, 9, 3, None) #pymysql 库版本
if VERSION[3] is not None:
    VERSION_STRING = "%d.%d.%d_%s" % VERSION
else:
    VERSION_STRING = "%d.%d.%d" % VERSION[:3]


def get_client_info():  # for MySQLdb compatibility
    version = VERSION
    if VERSION[3] is None:
        version = VERSION[:3]
    return '.'.join(map(str, version))

connect = Connection = Connect

# we include a doctored version_info here for MySQLdb compatibility
version_info = (1, 3, 12, "final", 0) # 覆盖MySQLdb的版本, 与django2.2 版本冲突

NULL = "NULL"

__version__ = get_client_info()

def install_as_MySQLdb():
    """
    After this function is called, any application that imports MySQLdb or
    _mysql will unwittingly actually use pymysql.
    """
    sys.modules["MySQLdb"] = sys.modules["_mysql"] = sys.modules["pymysql"]

该问题的github issue 该问题在django orm层处理

该问题将在django3.0中处理

django3.0发布时间

因此,我建议在django3.0发布前,我们应该使用django2.0, 避免str/byte的问题,等3.0发布后,我们直接升级django到3.0即可。在此之前,我们的代码只要兼容django3.0就行。与pymysql无关。

最终解决方案

© 著作权归作者所有

下一篇: DRF email log
hyhlinux
粉丝 8
博文 207
码字总数 70323
作品 0
西安
程序员
私信 提问
django2.2简单配置-mysql

一. 主要演示django2.2如何配置mysql数据库 1.安装pymysql模块pip isntall pymysql2.在setting中注释掉默认的数据库.添加mysql配置import pymysqlpymysql.installasMySQLdb()DATABASES = { }...

平头哥-Enjoystudy
07/17
45
0
python3 打包失败了 /root/anaconda3/bin/pyinstaller -F -w -i manage.ico t.py -F

173264 INFO: Including run-time hook 'pyirthmplconfig.py' 173266 INFO: Including run-time hook 'pyirthmpldata.py' 173370 INFO: Looking for dynamic libraries ldd: warning: you do......

flink58
04/18
782
0
Centos7安装Python3.7(兼容Python2.7)

Centos7安装Python3.7(兼容Python2.7) leyex0人评论158人阅读2018-08-23 16:56:52 Centos7下已自动安装Python2.7.5,but现在经常会出现Python2和Python3兼容使用的情况,所以我现在记录下安...

linjin200
2018/09/05
392
0
centos下使用nginx+uwsgi 部署django

CentOS 下使用uwsgi+nginx部署django 当前环境: Centos7 Django2.0 Python3.7 安装uwsgi 安装Nginx Nginx常用命令 django项目结构 测试uwsgi 通过uwsgi运行该文件 配置Django与uwsgi连接 在我...

_Change_
2018/08/27
344
1
Python3.7最新版本使用说明书,请你保管好!

以下是对Python官网内容的翻译 需要注意的是目前这个版本是Python3.7预计发布的四个预览版本之三。 Python Release Python 3.7.0b3 Python数据类 Python生成器异常处理 在Python 3.7中,生成...

糖宝lsh
2018/12/28
37
1

没有更多内容

加载失败,请刷新页面

加载更多

阿里巴巴的 Kubernetes 应用管理实践经验与教训

作者 | 孙健波(天元) 阿里巴巴技术专家 导读:本文整理自孙健波在 ArchSummit 大会 2019 北京站演讲稿记录。首先介绍了阿里巴巴基于 Kubernetes 项目进行大规模应用实践过程中遇到的问题;...

阿里巴巴云原生
30分钟前
4
0
pinpoint采样原理分析

使用pinpoint进行全链路监控时,支持对请求的采样,某条请求是否被采样,取决于整个链路开始的机器。该机器使用特定的采样算法。采样的标志会一直在链路中透传。比如在http里面,会在header里...

xiaomin0322
34分钟前
4
0
在IDEA开发工具中使用lombok

1. 首先我们需要安装IntelliJ IDEA中的lombok插件,打开IntelliJ IDEA后点击菜单栏中的File-->Settings,或者使用快捷键Ctrl+Alt+S进入到设置页面 我们点击设置中的Plugins进行插件的安装,在...

欧阳飘
35分钟前
5
0
爱码仕 5G生活畅想 (五) 每个人每个家庭都有一朵私有的云

30年前,微软让每个家庭都有一台电脑的理念成为了现实;而今云计算的观念已为老百姓们所熟识。数据就是能源;数据就是财富;谁生产了数据,这数据的所有权就归谁所有。随着原生云基础设施的完...

LitStone
37分钟前
4
0
嵌入式入门:嵌入式领域的职业发展方向是什么?

嵌入式入门:嵌入式领域的职业发展方向是什么? 在如今的IT市场上看,嵌入式的发展的应用都是广受欢迎的,在嵌入式入门学习中,我们可以发现嵌入式的发展方向有很多,门槛高低不一样。下面就...

xyd118
38分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部