django 2.2和mysql使用的常见问题


Posted in Python onJuly 18, 2019

可能是由于Django使用的MySQLdb库对Python3不支持,我们用采用了PyMySQL库来代替,导致出现各种坑,特别是执行以下2条命令的是时候:

python manage.py makemigrations
or
python manage.py inspectdb

第一个坑(提示你的mysqlclient版本过低)

无聊你是否执行pip install mysqlclient安装的最新版的,都抛出:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None

MD,LZ看到这错误太想骂人了,没办法采取网上的方法,注释大法!

找到Python安装路劲下的Python36-32\Lib\site-packages\django\db\backends\mysql\base.py文件

将文件中的如下代码注释(可能需先关闭pycharm IDE)

if version < (1, 3, 3):
  raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

第二个坑(str类型没有decode方法)

对对对,py3默认str是unicode编码,通过encode方法编码成bytes类型,后者才有decode解码方法。
提示错误来源:Python36\lib\site-packages\django\db\backends\mysql\operations.py", line 149, in last_executed_query

这里网上一搜一堆的把encode改成decode方法,我靠,这谁的脑洞无敌了
源方法内容(pip安装的django 2.2.1原封不动的内容):

def last_executed_query(self, cursor, sql, params):
    # With MySQLdb, cursor objects have an (undocumented) "_executed"
    # attribute where the exact query sent to the database is saved.
    # See MySQLdb/cursors.py in the source distribution.
    query = getattr(cursor, '_executed', None)
    if query is not None:
      query = query.decode(errors='replace')
    return query

通过print大法输出query结果,内容为

SELECT @@SQL_AUTO_IS_NULL

数据类型为str

这里网上还有注释大法,LZ不知道注释了if的后遗症是啥有没有影响,于是也没采纳。

于是我去django的github去翻这个文件这个方法的最新/历史版本,结果最新master分支内容如下:

def last_executed_query(self, cursor, sql, params):
    # With MySQLdb, cursor objects have an (undocumented) "_executed"
    # attribute where the exact query sent to the database is saved.
    # See MySQLdb/cursors.py in the source distribution.
    # MySQLdb returns string, PyMySQL bytes.
    return force_str(getattr(cursor, '_executed', None), errors='replace')

看函数名,应该是强制去把SQL转换成str了

我靠!!!这尼玛官网2.2.1/2.2.2(当前最新版)的包不是害人么,记得该文件上面引入下这个方法

from django.utils.encoding import force_str

然后再执行managa.py命令,可以了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
分析在Python中何种情况下需要使用断言
Apr 01 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
python+opencv实现的简单人脸识别代码示例
Nov 14 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
opencv python 图像去噪的实现方法
Aug 31 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
Python上下文管理器用法及实例解析
Nov 11 Python
基于python实现破解滑动验证码过程解析
May 28 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
python获取整个网页源码的方法
Aug 03 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
python Zmail模块简介与使用示例
Dec 19 Python
详解Python二维数组与三维数组切片的方法
Jul 18 #Python
Django框架视图介绍与使用详解
Jul 18 #Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 #Python
使用django实现一个代码发布系统
Jul 18 #Python
python 将字符串中的数字相加求和的实现
Jul 18 #Python
TensorFlow实现简单的CNN的方法
Jul 18 #Python
windows上安装python3教程以及环境变量配置详解
Jul 18 #Python
You might like
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
javascript concat数组累加 示例
2009/09/03 Javascript
jquery 选择器部分整理
2009/10/28 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
Python完全新手教程
2007/02/08 Python
Python实现测试磁盘性能的方法
2015/03/12 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
PyTorch-GPU加速实例
2020/06/23 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
解放思想大讨论活动心得体会
2014/09/11 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
Django使用echarts进行可视化展示的实践
2021/06/10 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏